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

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

Overview

This 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.

See Also:



214
215
216
# File 'lib/faraday/adapter/em_http.rb', line 214

def initialize
  reset
end

Instance Method Details

#add(&block) ⇒ Object



232
233
234
235
236
237
238
239
# File 'lib/faraday/adapter/em_http.rb', line 232

def add(&block)
  if running?
    perform_request { yield }
  else
    @registered_procs << block
  end
  @num_registered += 1
end

#check_finishedObject



269
270
271
# File 'lib/faraday/adapter/em_http.rb', line 269

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

#perform_requestObject



257
258
259
260
261
262
263
264
265
266
267
# File 'lib/faraday/adapter/em_http.rb', line 257

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

#resetObject

Re-initializes instance variables



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

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

#runObject



241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
# File 'lib/faraday/adapter/em_http.rb', line 241

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

Returns:

  • (Boolean)


228
229
230
# File 'lib/faraday/adapter/em_http.rb', line 228

def running?
  @running
end