Module: SolidObserver::EventBufferCore
- Included in:
- CableEventBuffer, CacheEventBuffer, QueueEventBuffer
- Defined in:
- lib/solid_observer/event_buffer_core.rb
Constant Summary collapse
- INITIAL_METRICS =
{ flush_failures_count: 0, drops_count: 0, last_flush_at: nil, last_flush_duration_ms: nil, last_flush_error: nil }.freeze
Instance Method Summary collapse
- #clear ⇒ Object
- #flush ⇒ Object
- #flush! ⇒ Object
- #metrics ⇒ Object
- #push(event_data) ⇒ Object
- #shutdown ⇒ Object
- #size ⇒ Object
Instance Method Details
#clear ⇒ Object
48 49 50 |
# File 'lib/solid_observer/event_buffer_core.rb', line 48 def clear @mutex.synchronize { @buffer.clear } end |
#flush ⇒ Object
40 41 42 |
# File 'lib/solid_observer/event_buffer_core.rb', line 40 def flush flush! end |
#flush! ⇒ Object
33 34 35 36 37 38 |
# File 'lib/solid_observer/event_buffer_core.rb', line 33 def flush! events_to_flush = drain_buffer return if events_to_flush.empty? flush_events(events_to_flush, monotonic_ms) end |
#metrics ⇒ Object
52 53 54 55 56 57 58 59 |
# File 'lib/solid_observer/event_buffer_core.rb', line 52 def metrics current_size = @mutex.synchronize { @buffer.size } snapshot = @metrics_mutex.synchronize { @metrics.dup } { size: current_size, max_buffer_size: SolidObserver.config.max_buffer_size }.merge(snapshot) end |
#push(event_data) ⇒ Object
24 25 26 27 28 29 30 31 |
# File 'lib/solid_observer/event_buffer_core.rb', line 24 def push(event_data) return unless (config = SolidObserver.config).persistence_mode? drops_count, should_flush = sync_push_and_check(event_data, config) record_drop(drops_count) if drops_count.positive? ensure_timer_running flush! if should_flush end |
#shutdown ⇒ Object
61 62 63 64 |
# File 'lib/solid_observer/event_buffer_core.rb', line 61 def shutdown stop_timer flush! end |
#size ⇒ Object
44 45 46 |
# File 'lib/solid_observer/event_buffer_core.rb', line 44 def size @mutex.synchronize { @buffer.size } end |