class Remon::DedupedQueue

Public Class Methods

new() click to toggle source
# File lib/remon/deduped_queue.rb, line 8
def initialize
  @hash = {}
  @mutex = Mutex.new
  @queue = Queue.new
end

Public Instance Methods

'<<'(task)
Alias for: enqueue
dequeue(non_block = false) click to toggle source
# 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
Also aliased as: pop, shift
enqueue(task) click to toggle source
# 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
Also aliased as: '<<'
pop(non_block = false)
Alias for: dequeue
shift(non_block = false)
Alias for: dequeue