Class: ActiveUsage::EventQueue
- Inherits:
-
Object
- Object
- ActiveUsage::EventQueue
- Defined in:
- lib/active_usage/event_queue.rb
Instance Method Summary collapse
- #drain ⇒ Object
- #dropped_count ⇒ Object
- #flush_ready? ⇒ Boolean
-
#initialize(max_size, batch_size) ⇒ EventQueue
constructor
A new instance of EventQueue.
- #push(event) ⇒ Object
- #size ⇒ Object
Constructor Details
#initialize(max_size, batch_size) ⇒ EventQueue
Returns a new instance of EventQueue.
5 6 7 8 9 10 11 |
# File 'lib/active_usage/event_queue.rb', line 5 def initialize(max_size, batch_size) @max_size = max_size @batch_size = batch_size @queue = Queue.new @mutex = Mutex.new @dropped_count = 0 end |
Instance Method Details
#drain ⇒ Object
23 24 25 26 27 28 29 30 31 |
# File 'lib/active_usage/event_queue.rb', line 23 def drain items = [] @mutex.synchronize do items << @queue.pop(true) while items.size < @batch_size && !@queue.empty? rescue ThreadError nil end items end |
#dropped_count ⇒ Object
41 42 43 |
# File 'lib/active_usage/event_queue.rb', line 41 def dropped_count @mutex.synchronize { @dropped_count } end |
#flush_ready? ⇒ Boolean
37 38 39 |
# File 'lib/active_usage/event_queue.rb', line 37 def flush_ready? size >= @batch_size end |
#push(event) ⇒ Object
13 14 15 16 17 18 19 20 21 |
# File 'lib/active_usage/event_queue.rb', line 13 def push(event) @mutex.synchronize do if @queue.size >= @max_size @dropped_count += 1 return end @queue << event end end |
#size ⇒ Object
33 34 35 |
# File 'lib/active_usage/event_queue.rb', line 33 def size @mutex.synchronize { @queue.size } end |