class RemoteService::Call
Attributes
action[R]
params[R]
queue[R]
timeout[R]
Public Class Methods
new(queue, action, params, timeout:)
click to toggle source
# File lib/remote_service/call.rb, line 5 def initialize(queue, action, params, timeout:) @queue = queue @action = action @params = params @timeout = (timeout || 10) / 1000.0 end
Public Instance Methods
run(&block)
click to toggle source
# File lib/remote_service/call.rb, line 12 def run(&block) return call_service_synchronously if !block_given? call_service(&block) end
Private Instance Methods
call_service() { |response, response| ... }
click to toggle source
# File lib/remote_service/call.rb, line 19 def call_service Queue.instance.request(queue, {action: action, params: params}) do |response| yield(response['result'], response['error']) end end
call_service_synchronously()
click to toggle source
# File lib/remote_service/call.rb, line 25 def call_service_synchronously lock = Util::Lock.new(timeout) call_service do |response, error| lock.unlock(response, error) end response, error = lock.wait raise remote_error(error) if error response end
remote_error(error)
click to toggle source
# File lib/remote_service/call.rb, line 35 def remote_error(error) RemoteService.logger.error("RPC_ERROR - SERVICE:[#{queue}] ACTION:[#{action}] ERROR:#{error}") Errors::RemoteCallError.new(error['name'], error['message'], error['backtrace']) end