lib/grumlin/request_dispatcher.rb in grumlin-0.14.1 vs lib/grumlin/request_dispatcher.rb in grumlin-0.14.2

- old
+ new

@@ -20,29 +20,33 @@ 401 => ClientSideError, 407 => ClientSideError, 498 => ClientSideError }.freeze - include Console + class DispatcherError < Grumlin::Error; end + class RequestAlreadyAddedError < DispatcherError; end + + class UnknownRequestError < DispatcherError; end + def initialize @requests = {} end def add_request(request) - raise "ERROR" if @requests.key?(request[:requestId]) + raise RequestAlreadyAddedError if @requests.key?(request[:requestId]) Async::Channel.new.tap do |channel| @requests[request[:requestId]] = { request: request, result: [], channel: channel } end end # builds a response object, when it's ready sends it to the client via a channel # TODO: sometimes response does not include requestID, no idea how to handle it so far. def add_response(response) # rubocop:disable Metrics/AbcSize request_id = response[:requestId] - raise "ERROR" unless ongoing_request?(request_id) + raise UnknownRequestError unless ongoing_request?(request_id) request = @requests[request_id] check_errors!(response[:status], request[:request]) @@ -59,10 +63,10 @@ request[:channel].exception(e) close_request(request_id) end def close_request(request_id) - raise "ERROR" unless ongoing_request?(request_id) + raise UnknownRequestError unless ongoing_request?(request_id) request = @requests.delete(request_id) request[:channel].close end