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.



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

def initialize
  reset
end

Instance Method Details

#addObject



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

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

#check_finishedObject



209
210
211
212
213
# File 'lib/faraday/adapter/em_http.rb', line 209

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

#perform_requestObject



203
204
205
206
207
# File 'lib/faraday/adapter/em_http.rb', line 203

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

#resetObject



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

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

#runObject



187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
# File 'lib/faraday/adapter/em_http.rb', line 187

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)


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

def running?() @running end