class Faraday::Adapter::EMHttp::Manager

The parallel manager is designed to start an EventMachine loop and block until all registered requests have been completed.

Public Class Methods

new() click to toggle source
# File lib/faraday/adapter/em_http.rb, line 176
def initialize
  reset
end

Public Instance Methods

add() { || ... } click to toggle source
# File lib/faraday/adapter/em_http.rb, line 190
def add
  if running?
    perform_request { yield }
  else
    @registered_procs << Proc.new
  end
  @num_registered += 1
end
check_finished() click to toggle source
# File lib/faraday/adapter/em_http.rb, line 221
def check_finished
  if @num_succeeded + @errors.size == @num_registered
    EventMachine.stop
  end
end
perform_request() { || ... } click to toggle source
# File lib/faraday/adapter/em_http.rb, line 215
def perform_request
  client = yield
  client.callback { @num_succeeded += 1; check_finished }
  client.errback { @errors << client.error; check_finished }
end
reset() click to toggle source
# File lib/faraday/adapter/em_http.rb, line 180
def reset
  @registered_procs = []
  @num_registered = 0
  @num_succeeded = 0
  @errors = []
  @running = false
end
run() click to toggle source
# File lib/faraday/adapter/em_http.rb, line 199
def run
  if @num_registered > 0
    @running = true
    EventMachine.run do
      @registered_procs.each do |proc|
        perform_request(&proc)
      end
    end
    if @errors.size > 0
      raise Faraday::Error::ClientError, @errors.first || "connection failed"
    end
  end
ensure
  reset
end
running?() click to toggle source
# File lib/faraday/adapter/em_http.rb, line 188
def running?() @running end