class Faraday::Adapter::EMHttp::Manager

This 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

@see reset

# File lib/faraday/adapter/em_http.rb, line 228
def initialize
  reset
end

Public Instance Methods

add(&block) click to toggle source
# File lib/faraday/adapter/em_http.rb, line 246
def add(&block)
  if running?
    perform_request(&block)
  else
    @registered_procs << block
  end
  @num_registered += 1
end
check_finished() click to toggle source
# File lib/faraday/adapter/em_http.rb, line 283
def check_finished
  EventMachine.stop if @num_succeeded + @errors.size == @num_registered
end
perform_request() { || ... } click to toggle source
# File lib/faraday/adapter/em_http.rb, line 271
def perform_request
  client = yield
  client.callback do
    @num_succeeded += 1
    check_finished
  end
  client.errback do
    @errors << client.error
    check_finished
  end
end
reset() click to toggle source

Re-initializes instance variables

# File lib/faraday/adapter/em_http.rb, line 233
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 255
def run
  if @num_registered.positive?
    @running = true
    EventMachine.run do
      @registered_procs.each do |proc|
        perform_request(&proc)
      end
    end
    unless @errors.empty?
      raise Faraday::ClientError, @errors.first || 'connection failed'
    end
  end
ensure
  reset
end
running?() click to toggle source

@return [Boolean]

# File lib/faraday/adapter/em_http.rb, line 242
def running?
  @running
end