Class: EventMachine::MultiRequest
- Inherits:
-
Object
- Object
- EventMachine::MultiRequest
- Includes:
- Deferrable
- Defined in:
- lib/em-http/multi.rb
Overview
EventMachine based Multi request client, based on a streaming HTTPRequest class, which allows you to open multiple parallel connections and return only when all of them finish. (i.e. ideal for parallelizing workloads)
Example
EventMachine.run {
multi = EventMachine::MultiRequest.new
# add multiple requests to the multi-handler
multi.add(:a, EventMachine::HttpRequest.new('http://www.google.com/').get)
multi.add(:b, EventMachine::HttpRequest.new('http://www.yahoo.com/').get)
multi.callback {
p multi.responses[:callback]
p multi.responses[:errback]
EventMachine.stop
}
}
Instance Attribute Summary (collapse)
-
- (Object) requests
readonly
Returns the value of attribute requests.
-
- (Object) responses
readonly
Returns the value of attribute responses.
Instance Method Summary (collapse)
- - (Object) add(name, conn)
- - (Boolean) finished?
-
- (MultiRequest) initialize
constructor
A new instance of MultiRequest.
Constructor Details
- (MultiRequest) initialize
A new instance of MultiRequest
31 32 33 34 |
# File 'lib/em-http/multi.rb', line 31 def initialize @requests = [] @responses = {:callback => {}, :errback => {}} end |
Instance Attribute Details
- (Object) requests (readonly)
Returns the value of attribute requests
29 30 31 |
# File 'lib/em-http/multi.rb', line 29 def requests @requests end |
- (Object) responses (readonly)
Returns the value of attribute responses
29 30 31 |
# File 'lib/em-http/multi.rb', line 29 def responses @responses end |
Instance Method Details
- (Object) add(name, conn)
36 37 38 39 40 41 |
# File 'lib/em-http/multi.rb', line 36 def add(name, conn) @requests.push(conn) conn.callback { @responses[:callback][name] = conn; check_progress } conn.errback { @responses[:errback][name] = conn; check_progress } end |
- (Boolean) finished?
43 44 45 |
# File 'lib/em-http/multi.rb', line 43 def finished? (@responses[:callback].size + @responses[:errback].size) == @requests.size end |