class RemoteService::Service

Private Class Methods

start(brokers:nil, workers:nil, monitor_interval:nil) click to toggle source
# File lib/remote_service/service.rb, line 28
def start(brokers:nil, workers:nil, monitor_interval:nil)
  queue = Queue.instance
  queue.connect(brokers) do
    queue.service(self.instance, workers, monitor_interval)
  end
end

Public Instance Methods

handle(payload, reply_to) click to toggle source
# File lib/remote_service/service.rb, line 7
def handle(payload, reply_to)
  result = method(payload['action'].to_sym).call(*prepare_params(payload['params']))
  RemoteService.logger.debug "RESULT - ACTION:[#{payload['action']}] REPLY_TO:[#{reply_to}] PARAMS:[#{payload['params']}] RESULT:[#{result}]"
  respond_with_result(reply_to, result)
end

Private Instance Methods

prepare_params(params) click to toggle source
# File lib/remote_service/service.rb, line 19
def prepare_params(params)
  params.map { |param| param.is_a?(Hash) ? sym_keys(param) : param }
end
respond_with_result(reply_to, result) click to toggle source
# File lib/remote_service/service.rb, line 15
def respond_with_result(reply_to, result)
  Queue.instance.publish(reply_to, {result: result})
end
sym_keys(params) click to toggle source
# File lib/remote_service/service.rb, line 23
def sym_keys(params)
  params.map { |k, v| [k.to_sym, v] }.to_h
end