Class: Intake::AsyncSink
- Inherits:
-
Object
- Object
- Intake::AsyncSink
- Defined in:
- lib/intake/async_sink.rb
Overview
Received events and asynchronously forward events to downstream sink
Instance Method Summary collapse
-
#initialize(forward_sink) ⇒ AsyncSink
constructor
A new instance of AsyncSink.
- #receive(event) ⇒ Object
Constructor Details
#initialize(forward_sink) ⇒ AsyncSink
Returns a new instance of AsyncSink.
9 10 11 12 13 14 15 |
# File 'lib/intake/async_sink.rb', line 9 def initialize(forward_sink) @forward_sink = forward_sink @drain_buffer = Concurrent::AtomicReference.new @drain_buffer.set(Immutable::Deque.empty) @has_events_flag = Concurrent::Event.new @drain_thread = Thread.new { drain_thread_func } end |
Instance Method Details
#receive(event) ⇒ Object
17 18 19 20 |
# File 'lib/intake/async_sink.rb', line 17 def receive(event) @drain_buffer.update { |buffer| buffer.push(event) } @has_events_flag.set end |