Class: Igniter::Store::EventRing

Inherits:
Object
  • Object
show all
Defined in:
lib/igniter/store/store_server.rb

Overview

Thread-safe bounded ring buffer for structured server events. Oldest events are evicted when max_size is exceeded.

Instance Method Summary collapse

Constructor Details

#initialize(max_size) ⇒ EventRing

Returns a new instance of EventRing.



19
20
21
22
23
# File 'lib/igniter/store/store_server.rb', line 19

def initialize(max_size)
  @max_size = max_size
  @events   = []
  @mutex    = Mutex.new
end

Instance Method Details

#push(event) ⇒ Object



25
26
27
28
29
30
# File 'lib/igniter/store/store_server.rb', line 25

def push(event)
  @mutex.synchronize do
    @events.push(event)
    @events.shift if @events.size > @max_size
  end
end

#sizeObject



36
37
38
# File 'lib/igniter/store/store_server.rb', line 36

def size
  @mutex.synchronize { @events.size }
end

#to_aObject



32
33
34
# File 'lib/igniter/store/store_server.rb', line 32

def to_a
  @mutex.synchronize { @events.dup }
end