Module: QueryOwl::EventStore

Defined in:
lib/query_owl/event_store.rb

Class Method Summary collapse

Class Method Details

.allObject



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

.clearObject



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.current)
    @write_pos = (@write_pos + 1) % capacity
    @stored    = [@stored + 1, capacity].min
  end
end

.sizeObject



30
31
32
# File 'lib/query_owl/event_store.rb', line 30

def size
  mutex.synchronize { @stored || 0 }
end