Class: Ask::State::Adapter

Inherits:
Object
  • Object
show all
Defined in:
lib/ask/state.rb

Overview

Abstract base class for state backends. Subclasses must implement all methods.

Direct Known Subclasses

Memory

Instance Method Summary collapse

Instance Method Details

#acquire_lock(key, ttl: 10) ⇒ Lock?

Acquire a lock for a key. Returns nil if the lock is held by another owner.

Parameters:

  • key (String)

    the resource to lock

  • ttl (Integer) (defaults to: 10)

    lock time-to-live in seconds (default 10)

Returns:

  • (Lock, nil)

    the lock if acquired, nil if already held

Raises:

  • (NotImplementedError)


82
83
84
# File 'lib/ask/state.rb', line 82

def acquire_lock(key, ttl: 10)
  raise NotImplementedError
end

#closeObject

Optional: called when the adapter is no longer needed.



147
148
149
# File 'lib/ask/state.rb', line 147

def close
  # no-op by default
end

#delete(key) ⇒ Object

Parameters:

  • key (String)

    the key

Raises:

  • (NotImplementedError)


64
65
66
# File 'lib/ask/state.rb', line 64

def delete(key)
  raise NotImplementedError
end

#dequeue(queue) ⇒ QueueEntry?

Pop the next item from a named queue.

Parameters:

  • queue (String)

    the queue name

Returns:

  • (QueueEntry, nil)

    the next entry, or nil if the queue is empty

Raises:

  • (NotImplementedError)


107
108
109
# File 'lib/ask/state.rb', line 107

def dequeue(queue)
  raise NotImplementedError
end

#enqueue(queue, value) ⇒ QueueEntry

Push an item onto a named queue.

Parameters:

  • queue (String)

    the queue name

  • value (Object)

    the value to enqueue

Returns:

Raises:

  • (NotImplementedError)


100
101
102
# File 'lib/ask/state.rb', line 100

def enqueue(queue, value)
  raise NotImplementedError
end

#get(key) ⇒ Object?

Returns the stored value, or nil if not found.

Parameters:

  • key (String)

    the key

Returns:

  • (Object, nil)

    the stored value, or nil if not found

Raises:

  • (NotImplementedError)


52
53
54
# File 'lib/ask/state.rb', line 52

def get(key)
  raise NotImplementedError
end

#list_append(key, value, max_length: nil) ⇒ Object

Append a value to an ordered list. Trims to max_length (keeps newest).

Parameters:

  • key (String)

    the list key

  • value (Object)

    the value to append

  • max_length (Integer, nil) (defaults to: nil)

    maximum list length (nil = no limit)

Raises:

  • (NotImplementedError)


123
124
125
# File 'lib/ask/state.rb', line 123

def list_append(key, value, max_length: nil)
  raise NotImplementedError
end

#list_range(key, start = 0, stop = -1)) ⇒ Array<Object>

Return a slice of the list.

Parameters:

  • key (String)

    the list key

  • start (Integer) (defaults to: 0)

    starting index (0-based)

  • stop (Integer) (defaults to: -1))

    ending index (inclusive, -1 for all)

Returns:

  • (Array<Object>)

    the list slice

Raises:

  • (NotImplementedError)


132
133
134
# File 'lib/ask/state.rb', line 132

def list_range(key, start = 0, stop = -1)
  raise NotImplementedError
end

#list_remove(key, value) ⇒ Integer

Remove all occurrences of a value from a list.

Parameters:

  • key (String)

    the list key

  • value (Object)

    the value to remove

Returns:

  • (Integer)

    number of removed elements

Raises:

  • (NotImplementedError)


140
141
142
# File 'lib/ask/state.rb', line 140

def list_remove(key, value)
  raise NotImplementedError
end

#queue_depth(queue) ⇒ Integer

Returns the number of items in the queue.

Parameters:

  • queue (String)

    the queue name

Returns:

  • (Integer)

    the number of items in the queue

Raises:

  • (NotImplementedError)


113
114
115
# File 'lib/ask/state.rb', line 113

def queue_depth(queue)
  raise NotImplementedError
end

#release_lock(key, lock) ⇒ Boolean

Release a lock. Only the lock owner can release it.

Parameters:

  • key (String)

    the resource to unlock

  • lock (Lock)

    the lock returned by #acquire_lock

Returns:

  • (Boolean)

    true if released, false if lock was already expired or not held

Raises:

  • (NotImplementedError)


90
91
92
# File 'lib/ask/state.rb', line 90

def release_lock(key, lock)
  raise NotImplementedError
end

#set(key, value, ttl: nil) ⇒ Object

Parameters:

  • key (String)

    the key

  • value (Object)

    the value (must be JSON-serializable)

  • ttl (Integer, nil) (defaults to: nil)

    time-to-live in seconds (nil = no expiry)

Raises:

  • (NotImplementedError)


59
60
61
# File 'lib/ask/state.rb', line 59

def set(key, value, ttl: nil)
  raise NotImplementedError
end

#set_if_not_exists(key, value, ttl: nil) ⇒ Boolean

Atomically set a value only if the key does not already exist.

Parameters:

  • key (String)

    the key

  • value (Object)

    the value

Returns:

  • (Boolean)

    true if the value was set, false if the key already exists

Raises:

  • (NotImplementedError)


72
73
74
# File 'lib/ask/state.rb', line 72

def set_if_not_exists(key, value, ttl: nil)
  raise NotImplementedError
end