class UnifiedQueues::Single
Universal single queue interface.
Universal single queue interface.
Universal single queue interface.
Universal single queue interface.
Universal single queue interface.
Universal single queue interface.
Universal single queue interface.
Universal single queue interface.
Constants
- DRIVERS
Contains assignment of classnames to drivers. @return [Hash]
Attributes
Contains driver for specific class instance. @return [UnifiedQueues::Single::Driver] driver instance
Public Class Methods
Constructor.
@param [Class|UnifiedQueues::Single::Driver] cls required class object or driver instance @param [Array] *args array of arguments for the queue constructor @param [Proc] &block block for the queue constructor
# File lib/unified-queues/single.rb, line 51 def initialize(cls, *args, &block) if cls.kind_of? UnifiedQueues::Single::Driver @driver = cls else self.assign_driver(cls, args, block) end end
Public Instance Methods
Assigns driver to interface according to given class name.
@param [Class] cls required class @param [Array] args array of arguments for the queue constructor @param [Proc] block block for the queue constructor @return [UnifiedQueues::Single::Driver] new driver instance
# File lib/unified-queues/single.rb, line 68 def assign_driver(cls, args, block) _cls = cls if not _cls.kind_of? Class _cls = cls.class end driver = nil name = nil self.class::DRIVERS.each_pair do |_name, _driver| begin _module = Module::get_module(_name.to_s) rescue NameError next end if _cls <= _module driver = _driver name = _name break end end ### require "unified-queues/single/driver/" << driver path = name.to_s.split("::") classname = path.shift << 'Driver::' << path.join('::') _module = Module::get_module("UnifiedQueues::Single::Driver::" << classname) args = [cls] + args @driver = _module::new(*args, &block) return @driver end
Clears the queue.
# File lib/unified-queues/single.rb, line 143 def clear!(&block) @driver.clear!(&block) end
Indicates queue is empty. @param [Boolean] true
if it's, false
otherwise
# File lib/unified-queues/single.rb, line 135 def empty?(&block) @driver.empty?(&block) end
Returns length of the queue. @return [Integer]
# File lib/unified-queues/single.rb, line 154 def length(&block) @driver.length(&block) end
Pops value out of the queue.
@param [Boolean|Integer] blocking true
or timeout if it should block, false
otherwise @param [Object] queue value
# File lib/unified-queues/single.rb, line 124 def pop(blocking = false, &block) @driver.pop(blocking, &block) end
Pushes the value into the queue.
@param [Object] value value for push @param [Object] key key for priority queues
# File lib/unified-queues/single.rb, line 111 def push(value, key = value, &block) @driver.push(value, key, &block) end