Class: PipeRpc::Hub::Requests
Instance Attribute Summary collapse
-
#requests ⇒ Object
readonly
Returns the value of attribute requests.
Instance Method Summary collapse
- #[](id) ⇒ Object
- #evaluate(request) ⇒ Object
-
#initialize(hub) ⇒ Requests
constructor
A new instance of Requests.
- #inject_result_for(id, result) ⇒ Object
- #wait_for_results_through(iteration) ⇒ Object
Constructor Details
#initialize(hub) ⇒ Requests
Returns a new instance of Requests.
3 4 5 6 7 8 |
# File 'lib/pipe_rpc/hub_requests.rb', line 3 def initialize(hub) @hub = hub @requests ={} @uid = 0 wait_for_results_through nil end |
Instance Attribute Details
#requests ⇒ Object (readonly)
Returns the value of attribute requests.
10 11 12 |
# File 'lib/pipe_rpc/hub_requests.rb', line 10 def requests @requests end |
Instance Method Details
#[](id) ⇒ Object
21 22 23 |
# File 'lib/pipe_rpc/hub_requests.rb', line 21 def [](id) @requests[id] end |
#evaluate(request) ⇒ Object
12 13 14 15 16 17 18 19 |
# File 'lib/pipe_rpc/hub_requests.rb', line 12 def evaluate(request) @uid += 1 request.id = @uid @requests[@uid] = request @hub.socket.write request @wait.call until request.result.received? request.result.value end |
#inject_result_for(id, result) ⇒ Object
25 26 27 28 29 30 31 |
# File 'lib/pipe_rpc/hub_requests.rb', line 25 def inject_result_for(id, result) if request = @requests.delete(id) request.result.value = result else raise "no request with id '#{id.inspect}'" end end |
#wait_for_results_through(iteration) ⇒ Object
33 34 35 |
# File 'lib/pipe_rpc/hub_requests.rb', line 33 def wait_for_results_through(iteration) @wait = iteration.respond_to?(:call) ? iteration : proc{ @hub. } end |