Class: Faraday::Adapter::EMHttp::Manager
- 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
- #add ⇒ Object
- #check_finished ⇒ Object
-
#initialize ⇒ Manager
constructor
A new instance of Manager.
- #perform_request ⇒ Object
- #reset ⇒ Object
- #run ⇒ Object
- #running? ⇒ Boolean
Constructor Details
#initialize ⇒ Manager
Returns a new instance of Manager.
151 152 153 |
# File 'lib/faraday/adapter/em_http.rb', line 151 def initialize reset end |
Instance Method Details
#add ⇒ Object
165 166 167 168 169 170 171 172 |
# File 'lib/faraday/adapter/em_http.rb', line 165 def add if running? perform_request { yield } else @registered_procs << Proc.new end @num_registered += 1 end |
#check_finished ⇒ Object
196 197 198 199 200 |
# File 'lib/faraday/adapter/em_http.rb', line 196 def check_finished if @num_succeeded + @errors.size == @num_registered EventMachine.stop end end |
#perform_request ⇒ Object
190 191 192 193 194 |
# File 'lib/faraday/adapter/em_http.rb', line 190 def perform_request client = yield client.callback { @num_succeeded += 1; check_finished } client.errback { @errors << client.error; check_finished } end |
#reset ⇒ Object
155 156 157 158 159 160 161 |
# File 'lib/faraday/adapter/em_http.rb', line 155 def reset @registered_procs = [] @num_registered = 0 @num_succeeded = 0 @errors = [] @running = false end |
#run ⇒ Object
174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 |
# File 'lib/faraday/adapter/em_http.rb', line 174 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
163 |
# File 'lib/faraday/adapter/em_http.rb', line 163 def running?() @running end |