class EM::All

Public Class Methods

new() click to toggle source
# File lib/em/all.rb, line 23
def initialize
  @defs = []
  @errors = []
  @results = []
  @all_ok = true
  @any_ok = false
  @done = 0
end

Public Instance Methods

<<(d) click to toggle source
# File lib/em/all.rb, line 32
def <<(d)
  @defs << d

  index = @results.size

  @results << nil
  @errors << nil

  d.callback do |*args|
    @results[index] = args
    @any_ok = true
    check_results
  end

  d.errback do |*args|
    @errors[index] = args
    @all_ok = false
    check_results
  end
end

Private Instance Methods

check_results() click to toggle source
# File lib/em/all.rb, line 55
def check_results
  @done += 1

  return unless @defs.size == @done

  unless @all_ok
    fail(@errors)
    return
  end

  succeed(@results)
end