Class: Igniter::Store::EventRing
- Inherits:
-
Object
- Object
- Igniter::Store::EventRing
- 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
-
#initialize(max_size) ⇒ EventRing
constructor
A new instance of EventRing.
- #push(event) ⇒ Object
- #size ⇒ Object
- #to_a ⇒ Object
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 |
#size ⇒ Object
36 37 38 |
# File 'lib/igniter/store/store_server.rb', line 36 def size @mutex.synchronize { @events.size } end |
#to_a ⇒ Object
32 33 34 |
# File 'lib/igniter/store/store_server.rb', line 32 def to_a @mutex.synchronize { @events.dup } end |