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


176
177
178
# File 'lib/faraday/adapter/em_http.rb', line 176

def initialize
  reset
end

Instance Method Details

#addObject


190
191
192
193
194
195
196
197
# 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_finishedObject


221
222
223
224
225
# File 'lib/faraday/adapter/em_http.rb', line 221

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

#perform_requestObject


215
216
217
218
219
# 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

#resetObject


180
181
182
183
184
185
186
# File 'lib/faraday/adapter/em_http.rb', line 180

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

#runObject


199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
# 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?Boolean

Returns:

  • (Boolean)

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

def running?() @running end