class PipeRpc::Hub::Message

Public Class Methods

new(hub, body) click to toggle source
# File lib/pipe_rpc/hub_message.rb, line 5
def initialize(hub, body)
  @hub = hub
  @body = body
end

Public Instance Methods

error?() click to toggle source
# File lib/pipe_rpc/hub_message.rb, line 18
def error?
  @body.has_key? :error and @body[:id].nil?
end
handle() click to toggle source
# File lib/pipe_rpc/hub_message.rb, line 22
def handle
  if response?
    guarded{ handler.handle if handler }
  else
    handler.handle if handler
  end
end
request?() click to toggle source
# File lib/pipe_rpc/hub_message.rb, line 10
def request?
  @body.has_key? :method
end
response?() click to toggle source
# File lib/pipe_rpc/hub_message.rb, line 14
def response?
  (@body.has_key? :error or @body.has_key? :result) and !!@body[:id]
end

Private Instance Methods

guarded() { || ... } click to toggle source
# File lib/pipe_rpc/hub_message.rb, line 48
def guarded
  yield
rescue => e
  @hub.socket.write PipeRpcErrorResponse.new(id: @body[:id], error: { code: -32600,
        data: { message: e.message } })
  nil
end
handler() click to toggle source
# File lib/pipe_rpc/hub_message.rb, line 44
def handler
  @handler ||= guarded{ handler_type.new(@hub, @body) }
end
handler_type() click to toggle source
# File lib/pipe_rpc/hub_message.rb, line 32
def handler_type
  if request?
    Hub::Request
  elsif response?
    Client::Request::Response
  elsif error?
    Message::ErrorResponse
  else
    raise 'no request, result or error'
  end
end