Class: Intake::AsyncSink

Inherits:
Object
  • Object
show all
Defined in:
lib/intake/async_sink.rb

Overview

Received events and asynchronously forward events to downstream sink

Instance Method Summary collapse

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