Class: Remon::DedupedQueue

Inherits:
Object
  • Object
show all
Includes:
Logger
Defined in:
lib/remon/deduped_queue.rb

Instance Method Summary collapse

Methods included from Logger

logger, #logger

Constructor Details

#initializeDedupedQueue

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