Sha256: fdf61756102ab61daf033ca31814cc76c21f04747f402831165567a4b0744088
Contents?: true
Size: 756 Bytes
Versions: 5
Compression:
Stored size: 756 Bytes
Contents
module PipeRpc class Hub class Requester def initialize(hub) @hub = hub @requests = {} @uid = 0 end def next_uid @uid += 1 end def notification(signature) Request.new(signature) end def request(signature, &on_response) request = Request.new(signature.merge(id: next_uid)) @requests[request.id] = { request: request, on_response: on_response } request end def handle_response(response) request = @requests.delete(response.id) raise InternalError.new("no request for response(id: #{response.id})") unless request request[:on_response].call response.result_for(request[:request]) end end end end
Version data entries
5 entries across 5 versions & 1 rubygems