Class: EmPipelines::AggregatedEventSource

Inherits:
EventSource
  • Object
show all
Defined in:
lib/empipelines/aggregated_event_source.rb

Instance Method Summary collapse

Methods inherited from EventSource

#on_event, #on_finished

Constructor Details

#initialize(em, *event_sources) ⇒ AggregatedEventSource

Returns a new instance of AggregatedEventSource.



6
7
8
# File 'lib/empipelines/aggregated_event_source.rb', line 6

def initialize(em, *event_sources)
  @em, @sources = em, event_sources.flatten
end

Instance Method Details

#start!Object



10
11
12
13
14
15
16
17
18
19
20
21
22
# File 'lib/empipelines/aggregated_event_source.rb', line 10

def start!
  finished = 0
  @sources.each do |s|
    s.on_event(event_handler)

    s.on_finished do |*ignored|
      finished += 1
      finished! if finished == @sources.size
    end

    @em.next_tick { s.start! }
  end
end