Class: Faraday::Adapter::EMHttp::Manager

Inherits:
Object
  • Object
show all
Defined in:
lib/faraday/adapter/em_http.rb

Overview

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

Instance Method Summary collapse

Constructor Details

#initializeManager

Returns a new instance of Manager


154
155
156
# File 'lib/faraday/adapter/em_http.rb', line 154

def initialize
  reset
end

Instance Method Details

#addObject


168
169
170
171
172
173
174
175
# File 'lib/faraday/adapter/em_http.rb', line 168

def add
  if running?
    perform_request { yield }
  else
    @registered_procs << Proc.new
  end
  @num_registered += 1
end

#check_finishedObject


199
200
201
202
203
# File 'lib/faraday/adapter/em_http.rb', line 199

def check_finished
  if @num_succeeded + @errors.size == @num_registered
    EventMachine.stop
  end
end

#perform_requestObject


193
194
195
196
197
# File 'lib/faraday/adapter/em_http.rb', line 193

def perform_request
  client = yield
  client.callback { @num_succeeded += 1; check_finished }
  client.errback { @errors << client.error; check_finished }
end

#resetObject


158
159
160
161
162
163
164
# File 'lib/faraday/adapter/em_http.rb', line 158

def reset
  @registered_procs = []
  @num_registered = 0
  @num_succeeded = 0
  @errors = []
  @running = false
end

#runObject


177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
# File 'lib/faraday/adapter/em_http.rb', line 177

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?Boolean

Returns:

  • (Boolean)

166
# File 'lib/faraday/adapter/em_http.rb', line 166

def running?() @running end