Class: ThomasUtils::MultiFutureWrapper

Inherits:
Object
  • Object
show all
Defined in:
lib/thomas_utils/multi_future_wrapper.rb

Instance Method Summary collapse

Constructor Details

#initialize(futures, leader = nil, &callback) ⇒ MultiFutureWrapper

Returns a new instance of MultiFutureWrapper.



3
4
5
6
7
# File 'lib/thomas_utils/multi_future_wrapper.rb', line 3

def initialize(futures, leader = nil, &callback)
  @futures = futures
  @leader = leader
  @callback = callback
end

Instance Method Details

#getObject



13
14
15
# File 'lib/thomas_utils/multi_future_wrapper.rb', line 13

def get
  @futures.map(&:get).map(&@callback)
end

#joinObject



9
10
11
# File 'lib/thomas_utils/multi_future_wrapper.rb', line 9

def join
  @futures.map(&:join)
end

#on_failure(&block) ⇒ Object



17
18
19
20
21
22
23
# File 'lib/thomas_utils/multi_future_wrapper.rb', line 17

def on_failure(&block)
  if @leader
    @leader.on_failure(&block)
  else
    @futures.each { |future| future.on_failure(&block) }
  end
end

#on_successObject



25
26
27
28
29
30
31
# File 'lib/thomas_utils/multi_future_wrapper.rb', line 25

def on_success
  if @leader
    @leader.on_success { |result| yield @callback.call(result) }
  else
    @futures.each { |future| future.on_success { |result| yield @callback.call(result) } }
  end
end