class PipeRpc::Hub::Request

Constants

CALL_LINENO

Attributes

hub[R]

Public Class Methods

new(hub, body) click to toggle source
Calls superclass method PipeRpc::Request::new
# File lib/pipe_rpc/hub_request.rb, line 5
def initialize(hub, body)
  @hub = hub
  super body
end

Public Instance Methods

evaluate_result(result = nil) { |: result)| ... } click to toggle source
# File lib/pipe_rpc/hub_request.rb, line 21
def evaluate_result(result = nil, &block)
  result = Result.new(self, block_given? ? yield : result)
rescue Exception => e
  result = ErrorResult.new(self, e)
ensure
  asynchronous = result.value == evaluate_result_proc
  @hub.socket.write(result.to_response) unless asynchronous
  return result.value
end
evaluate_result_proc() click to toggle source
# File lib/pipe_rpc/hub_request.rb, line 31
def evaluate_result_proc
  @evaluate_result_proc ||= proc do |result = nil, &block|
    evaluate_result(result, &block)
  end
end
handle() click to toggle source
# File lib/pipe_rpc/hub_request.rb, line 12
def handle
  evaluate_result do
    # the block is passed for asynchronous evaluation
    mapped_arguments = @hub.transport_mapper.from_transport arguments
    @hub.servers[server].__send__(method, *mapped_arguments, &evaluate_result_proc)
  end
end