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