Class: EzLogsAgent::Buffer
- Inherits:
-
Object
- Object
- EzLogsAgent::Buffer
- Defined in:
- lib/ez_logs_agent/buffer.rb
Overview
Thread-safe in-memory event buffer. Stores events until flushed. Drops oldest when full. Never raises exceptions to host application.
Class Method Summary collapse
-
.clear ⇒ void
Clear all buffered events.
-
.flush ⇒ Array<Hash>
Flush all buffered events and clear buffer atomically.
-
.push(event) ⇒ void
Add event to buffer.
-
.size ⇒ Integer
Current number of buffered events.
Class Method Details
.clear ⇒ void
This method returns an undefined value.
Clear all buffered events.
55 56 57 58 59 60 |
# File 'lib/ez_logs_agent/buffer.rb', line 55 def clear @monitor.synchronize { @queue.clear } rescue => error log_error("[Buffer] clear failed: #{error.}") # Best effort, ignore failures end |
.flush ⇒ Array<Hash>
Flush all buffered events and clear buffer atomically.
33 34 35 36 37 38 39 40 41 42 |
# File 'lib/ez_logs_agent/buffer.rb', line 33 def flush @monitor.synchronize do events = @queue.dup @queue.clear events end rescue => error log_error("[Buffer] flush failed: #{error.}") [] end |
.push(event) ⇒ void
This method returns an undefined value.
Add event to buffer. Drops oldest if full.
17 18 19 20 21 22 23 24 25 26 27 28 29 |
# File 'lib/ez_logs_agent/buffer.rb', line 17 def push(event) @monitor.synchronize do if @queue.size >= max_size @queue.shift log_warn("[Buffer] Buffer full (#{max_size}), dropped oldest event") end @queue.push(event) end rescue => error log_error("[Buffer] push failed: #{error.}") # Fail open: discard event, never crash host end |
.size ⇒ Integer
Current number of buffered events.
46 47 48 49 50 51 |
# File 'lib/ez_logs_agent/buffer.rb', line 46 def size @monitor.synchronize { @queue.size } rescue => error log_error("[Buffer] size failed: #{error.}") 0 end |