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