Sha256: 4273ec3e089fae6b7485c2da02f4615bcebd16d7761b8cfd2de016325030149b
Contents?: true
Size: 803 Bytes
Versions: 1
Compression:
Stored size: 803 Bytes
Contents
module PipeRpc class Hub::Requests def initialize(hub) @hub = hub @requests ={} @uid = 0 wait_for_results_through nil end attr_reader :requests 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 def [](id) @requests[id] end def inject_result_for(id, result) request = @requests.delete(id) raise NoRequestForResponseError.new("no request with id '#{id.inspect}'") unless request request.result.value = result end def wait_for_results_through(iteration) @wait = iteration.respond_to?(:call) ? iteration : proc{ @hub.handle_message } end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
pipe_rpc-1.0.0 | lib/pipe_rpc/hub_requests.rb |