class RabbitRPC::RequestHandler

Attributes

one_way[R]

Public Class Methods

new(serialized_message) click to toggle source
# File lib/rabbit_rpc/request_handler.rb, line 7
def initialize(serialized_message)
  @message = Message.unpack serialized_message
end

Public Instance Methods

execute() click to toggle source
# File lib/rabbit_rpc/request_handler.rb, line 11
def execute
  parser = MessageParser.new(@message)
  parser.parse

  @one_way = parser.one_way?

  logger.info "Received message #{@message}"

  Kernel.const_get(parser.service_name).send(parser.method_name, *@message['args'] )
rescue ArgumentError => e
  log_exception(e)
  { ok: false, message: e.message }
rescue Exception => e
  log_exception(e)
  exception_response
end

Private Instance Methods

exception_response() click to toggle source

We do not want to return the actual exceptions back TODO: Perhaps have this user defined?

# File lib/rabbit_rpc/request_handler.rb, line 32
def exception_response
  { ok: false, message: 'Error processing request' }
end