Class: Remon::DedupedQueue
- Inherits:
-
Object
- Object
- Remon::DedupedQueue
- Includes:
- Logger
- Defined in:
- lib/remon/deduped_queue.rb
Instance Method Summary collapse
- #dequeue(non_block = false) ⇒ Object (also: #pop, #shift)
- #enqueue(task) ⇒ Object (also: #<<)
-
#initialize ⇒ DedupedQueue
constructor
A new instance of DedupedQueue.
Methods included from Logger
Constructor Details
#initialize ⇒ DedupedQueue
Returns a new instance of DedupedQueue.
8 9 10 11 12 |
# File 'lib/remon/deduped_queue.rb', line 8 def initialize @hash = {} @mutex = Mutex.new @queue = Queue.new end |
Instance Method Details
#dequeue(non_block = false) ⇒ Object Also known as: pop, shift
25 26 27 28 29 30 31 |
# File 'lib/remon/deduped_queue.rb', line 25 def dequeue(non_block = false) task = @queue.pop(non_block) @mutex.synchronize do @hash.delete task end task end |
#enqueue(task) ⇒ Object Also known as: <<
14 15 16 17 18 19 20 21 22 23 |
# File 'lib/remon/deduped_queue.rb', line 14 def enqueue(task) @mutex.synchronize do if @hash[task] logger.debug "duplicate item #{task}" if logger.debug? return end @hash[task] = true end @queue << task end |