Class: Semlogr::Utils::BoundedQueue

Inherits:
Object
  • Object
show all
Defined in:
lib/semlogr/utils/bounded_queue.rb

Instance Method Summary collapse

Constructor Details

#initialize(max_size) ⇒ BoundedQueue

Returns a new instance of BoundedQueue.



8
9
10
11
12
# 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

Instance Method Details

#popObject



26
27
28
# File 'lib/semlogr/utils/bounded_queue.rb', line 26

def pop
  @queue.pop
end

#pop_count(count) ⇒ Object



30
31
32
33
34
35
36
37
38
# 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) ⇒ Object



18
19
20
21
22
23
24
# 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

#sizeObject



14
15
16
# File 'lib/semlogr/utils/bounded_queue.rb', line 14

def size
  @queue.size
end