class Semlogr::Utils::BoundedQueue

Public Class Methods

new(max_size) click to toggle source
# File lib/semlogr/utils/bounded_queue.rb, line 8
def initialize(max_size)
  @max_size = max_size
  @queue = Queue.new
  @queue_mutex = Mutex.new
end

Public Instance Methods

pop() click to toggle source
# File lib/semlogr/utils/bounded_queue.rb, line 26
def pop
  @queue.pop
end
pop_count(count) click to toggle source
# File lib/semlogr/utils/bounded_queue.rb, line 30
def pop_count(count)
  items = []

  @queue_mutex.synchronize do
    items << @queue.pop until @queue.empty? || items.size == count
  end

  items
end
push(item) click to toggle source
# File lib/semlogr/utils/bounded_queue.rb, line 18
def push(item)
  @queue_mutex.synchronize do
    return if size >= @max_size

    @queue << item
  end
end
size() click to toggle source
# File lib/semlogr/utils/bounded_queue.rb, line 14
def size
  @queue.size
end