class UnifiedQueues::Multi::Driver::EMJackDriver::Connection
Multi
queue driver for unified queues single queue interface.
Public Class Methods
Constructor.
# File lib/unified-queues/multi/driver/em-jack.rb, line 64 def initialize(cls, *args, &block) @native = cls::new(*args, &block) @subscribed_names = LookupHash["default"] @used_name = "default" end
Public Instance Methods
Lists names of all available queues. @return [Array]
# File lib/unified-queues/multi/driver/em-jack.rb, line 174 def list(&block) @native.list(&block) end
Lists all subscribed queues. @return [Array]
# File lib/unified-queues/multi/driver/em-jack.rb, line 192 def list_subscribed(&block) @native.list(:watched, &block) end
Lists all used queues. @return [Array]
# File lib/unified-queues/multi/driver/em-jack.rb, line 183 def list_used(&block) @native.list(:used, &block) end
Pops value from the queue. Callback is recurring, so it will keep callback active after #pop
.
@param [Boolean] blocking indicates, it should block or not @return [Object, nil]
# File lib/unified-queues/multi/driver/em-jack.rb, line 89 def pop(blocking = false, &block) timeout = blocking ? nil : 0 @native.each_job(timeout) do |job| result = job.body job.delete do yield result end end end
Pushes value to the currently used queue.
@param [Object] value @param [Integer] key key for priority queues
# File lib/unified-queues/multi/driver/em-jack.rb, line 77 def push(value, key = value, &block) @native.put(value, :priority => key, &block) end
Subscribes to the queue. So marks it as target for {#pop}. Note, than only single queue can be subscribed at one time.
@param [Object] name name of the required queue
# File lib/unified-queues/multi/driver/em-jack.rb, line 124 def subscribe(name, &block) if not name.in? @subscribed_names @subscribed_names << name @native.watch(name, &block) elsif not block.nil? EM::next_tick do yield end end end
Currently subscribed queue. @return [Queue]
# File lib/unified-queues/multi/driver/em-jack.rb, line 165 def subscribed yield self end
Unsubscribes from the queue. @param [Object] name name of the required queue\
# File lib/unified-queues/multi/driver/em-jack.rb, line 140 def unsubscribe(name, &block) if name.in? @subscribed_names @subscribed_names.delete name @native.ignore(name, &block) elsif not block.nil? EM::next_tick do yield end end end
Sets queue with given name as used. So marks it as target for {#push}.
@param [Object] name name of the required queue
# File lib/unified-queues/multi/driver/em-jack.rb, line 106 def use(name, &block) if name != @used_name @used_name = name @native.use(name, &block) elsif not block.nil? EM::next_tick do yield end end end
Currently used queue. @return [Queue]
# File lib/unified-queues/multi/driver/em-jack.rb, line 156 def used yield self end