Module: QueryOwl::EventStore
- Defined in:
- lib/query_owl/event_store.rb
Class Method Summary collapse
Class Method Details
.all ⇒ Object
13 14 15 16 17 18 19 20 21 22 23 24 |
# File 'lib/query_owl/event_store.rb', line 13 def all mutex.synchronize do stored = @stored || 0 return [] if stored.zero? if stored < capacity buffer.first(stored) else buffer[@write_pos..] + buffer[0...@write_pos] end end end |
.clear ⇒ Object
26 27 28 |
# File 'lib/query_owl/event_store.rb', line 26 def clear mutex.synchronize { reset! } end |
.push(event) ⇒ Object
4 5 6 7 8 9 10 11 |
# File 'lib/query_owl/event_store.rb', line 4 def push(event) mutex.synchronize do ensure_buffer_size buffer[@write_pos] = event.merge(recorded_at: Time.now) @write_pos = (@write_pos + 1) % capacity @stored = [@stored + 1, capacity].min end end |
.size ⇒ Object
30 31 32 |
# File 'lib/query_owl/event_store.rb', line 30 def size mutex.synchronize { @stored || 0 } end |