class RedisQueue::Simple
Attributes
config[R]
name[R]
Public Class Methods
all()
click to toggle source
# File lib/redis-call/redis_queue.rb, line 34 def all klass = self query do queued(keys "queue.*") do |result| (result.collect {|name| name.gsub /\Aqueue\./, ''} | RedisQueue.config.keys).sort.collect {|name| klass.new name} end end end
delete(*names)
click to toggle source
# File lib/redis-call/redis_queue.rb, line 43 def delete *names query do del *(names.map{|name| key(:queue)/name}) end end
new(name = nil, args = {})
click to toggle source
Calls superclass method
RedisCall::new
# File lib/redis-call/redis_queue.rb, line 52 def initialize(name = nil, args = {}) super(args) @name = key(name) @key = key(:queue)/name @config = args[:config] || RedisQueue.config[name] || {} end
Public Instance Methods
backed_up_blocking_pop(timeout = 0) { |element| ... }
click to toggle source
Returns element
# File lib/redis-call/redis_queue.rb, line 102 def backed_up_blocking_pop timeout = 0 if raw_element = brpoplpush(@key, @key/:backup, timeout) element = decode(raw_element) if block_given? yield(element) remove_raw_backup_element raw_element else return element end end end
backed_up_pop()
click to toggle source
# File lib/redis-call/redis_queue.rb, line 97 def backed_up_pop queued(rpoplpush(@key, @key/:backup)) {|result| decode(result) if result} end
backed_up_pop_all()
click to toggle source
# File lib/redis-call/redis_queue.rb, line 128 def backed_up_pop_all raise(NonTransactionalMethod) if inside_transaction? result = [] # We does not call backed_up_pop here, because of the edge case, when element is a string "null" which JSON-decoded as nil while element = rpoplpush(@key, @key/:backup) result.push decode(element) end result end
backup_elements()
click to toggle source
# File lib/redis-call/redis_queue.rb, line 150 def backup_elements queued(lgetall(@key/:backup)) {|result| result.map {|element| decode(element)}.reverse } end
backup_length()
click to toggle source
# File lib/redis-call/redis_queue.rb, line 196 def backup_length llen(@key/:backup) end
blocking_pop(timeout = 0)
click to toggle source
Returns element
# File lib/redis-call/redis_queue.rb, line 91 def blocking_pop timeout = 0 if result = brpop(@key, timeout) decode(result.last) end end
blocking_redirect(to, timeout = 0)
click to toggle source
NOTE: Make sure your redis is 2.2.13 or higher to use this method
https://github.com/antirez/redis/commit/c47d152c8d96415de1af994b1a4bb3e0347caef3 http://code.google.com/p/redis/issues/detail?id=593
# File lib/redis-call/redis_queue.rb, line 170 def blocking_redirect to, timeout = 0 brpoplpush(@key, key(:queue)/(to.kind_of?(RedisQueue::Simple) ? to.name : to), timeout) end
decode(element)
click to toggle source
# File lib/redis-call/redis_queue.rb, line 66 def decode element element end
delete()
click to toggle source
# File lib/redis-call/redis_queue.rb, line 200 def delete del(@key) end
Also aliased as: destroy
elements()
click to toggle source
# File lib/redis-call/redis_queue.rb, line 146 def elements queued(lgetall(@key)) {|result| result.map {|element| decode(element)}.reverse } end
encode(element)
click to toggle source
# File lib/redis-call/redis_queue.rb, line 62 def encode element element end
error_length()
click to toggle source
# File lib/redis-call/redis_queue.rb, line 192 def error_length llen(@key/:error) end
error_push(element)
click to toggle source
# File lib/redis-call/redis_queue.rb, line 76 def error_push element lpush(@key/:error, encode(element)) end
error_push_raw(element)
click to toggle source
# File lib/redis-call/redis_queue.rb, line 80 def error_push_raw element lpush(@key/:error, element) end
filter_backup_element(element)
click to toggle source
# File lib/redis-call/redis_queue.rb, line 184 def filter_backup_element element element end
length()
click to toggle source
# File lib/redis-call/redis_queue.rb, line 188 def length llen(@key) end
pop()
click to toggle source
Returns element
# File lib/redis-call/redis_queue.rb, line 86 def pop queued(rpop @key) {|result| decode(result) if result} end
pop_all()
click to toggle source
# File lib/redis-call/redis_queue.rb, line 138 def pop_all multi do queued(lgetall(@key)) {|result| result.map {|element| decode(element)}.reverse } queued(del @key) end end
push(element)
click to toggle source
Returns the number of elements inside the queue after the push operation.
# File lib/redis-call/redis_queue.rb, line 72 def push element lpush(@key, encode(element)) end
raw_backup_elements()
click to toggle source
# File lib/redis-call/redis_queue.rb, line 154 def raw_backup_elements queued(lgetall(@key/:backup)) {|result| result.reverse } end
remove_raw_backup_element(element)
click to toggle source
# File lib/redis-call/redis_queue.rb, line 115 def remove_raw_backup_element element queued(lrem(@key/:backup, -1, element)) do |result| raise(RedisQueue::ElementNotFound, "Not found element #{element.inspect} in queue #{@key/:backup}") if result != 1 end end
remove_raw_element(element)
click to toggle source
# File lib/redis-call/redis_queue.rb, line 121 def remove_raw_element element queued(lrem(@key, -1, element)) do |result| raise(RedisQueue::ElementNotFound, "Not found element #{element.inspect} in queue #{@key}") if result != 1 end end
restore_backup()
click to toggle source
# File lib/redis-call/redis_queue.rb, line 174 def restore_backup raise(NonTransactionalMethod) if inside_transaction? while element = rpop(@key/:backup) if element = filter_backup_element(element) lpush(@key, element) end end end
watch(*keys)
click to toggle source
Calls superclass method
# File lib/redis-call/redis_queue.rb, line 159 def watch *keys keys.empty? ? super(@key) : super(*keys) end
watch_backup()
click to toggle source
# File lib/redis-call/redis_queue.rb, line 163 def watch_backup watch @key/:backup end