Class: Redis::Queue
- Inherits:
-
Object
- Object
- Redis::Queue
- Defined in:
- lib/redis/queue.rb
Constant Summary collapse
- VERSION =
"0.0.4"
Class Method Summary collapse
Instance Method Summary collapse
- #clear(clear_process_queue = false) ⇒ Object
- #commit ⇒ Object
- #empty? ⇒ Boolean
-
#initialize(queue_name, process_queue_name, options = {}) ⇒ Queue
constructor
A new instance of Queue.
- #length ⇒ Object (also: #size)
- #pop(non_block = false) ⇒ Object (also: #dec, #shift)
- #process(non_block = false, timeout = nil) ⇒ Object
- #push(obj) ⇒ Object (also: #enc, #<<)
- #refill ⇒ Object
Constructor Details
#initialize(queue_name, process_queue_name, options = {}) ⇒ Queue
Returns a new instance of Queue.
10 11 12 13 14 15 16 17 18 19 20 |
# File 'lib/redis/queue.rb', line 10 def initialize(queue_name, process_queue_name, = {}) raise ArgumentError, 'First argument must be a non empty string' if !queue_name.is_a?(String) || queue_name.empty? raise ArgumentError, 'Second argument must be a non empty string' if !process_queue_name.is_a?(String) || process_queue_name.empty? raise ArgumentError, 'Queue and Process queue have the same name' if process_queue_name == queue_name @redis = [:redis] || Redis.current @queue_name = queue_name @process_queue_name = process_queue_name = nil @timeout = [:timeout] ||= 0 end |
Class Method Details
.version ⇒ Object
6 7 8 |
# File 'lib/redis/queue.rb', line 6 def self.version "redis-queue version #{VERSION}" end |
Instance Method Details
#clear(clear_process_queue = false) ⇒ Object
26 27 28 29 |
# File 'lib/redis/queue.rb', line 26 def clear(clear_process_queue = false) @redis.del @queue_name @redis.del @process_queue_name if clear_process_queue end |
#commit ⇒ Object
48 49 50 |
# File 'lib/redis/queue.rb', line 48 def commit @redis.lrem(@process_queue_name, 0, ) end |
#empty? ⇒ Boolean
31 32 33 |
# File 'lib/redis/queue.rb', line 31 def empty? !(length > 0) end |
#length ⇒ Object Also known as: size
22 23 24 |
# File 'lib/redis/queue.rb', line 22 def length @redis.llen @queue_name end |
#pop(non_block = false) ⇒ Object Also known as: dec, shift
39 40 41 42 43 44 45 46 |
# File 'lib/redis/queue.rb', line 39 def pop(non_block=false) if non_block = @redis.rpoplpush(@queue_name,@process_queue_name) else = @redis.brpoplpush(@queue_name,@process_queue_name, @timeout) end end |
#process(non_block = false, timeout = nil) ⇒ Object
52 53 54 55 56 57 58 59 60 61 |
# File 'lib/redis/queue.rb', line 52 def process(non_block=false, timeout = nil) @timeout = timeout unless timeout.nil? loop do = pop(non_block) ret = yield if block_given? commit if ret break if .nil? || (non_block && empty?) end end |
#push(obj) ⇒ Object Also known as: enc, <<
35 36 37 |
# File 'lib/redis/queue.rb', line 35 def push(obj) @redis.lpush(@queue_name, obj) end |
#refill ⇒ Object
63 64 65 66 67 68 |
# File 'lib/redis/queue.rb', line 63 def refill while =@redis.lpop(@process_queue_name) @redis.rpush(@queue_name, ) end true end |