Files
analyzer-pipeline/lib/pipeline/rpc/front_end_request.rb
2019-10-14 09:45:06 +01:00

45 lines
925 B
Ruby

module Pipeline::Rpc
class FrontEndRequest
def self.recv(socket)
msg = []
socket.recv_strings(msg)
self.new(msg, socket)
end
attr_reader :raw_address, :raw_msg, :parsed_msg
def initialize(msg_strings, socket)
@raw_address = msg_strings[0]
@raw_msg = msg_strings[2]
@socket = socket
end
def send_error(err)
reply = [raw_address, "", err.to_json]
@socket.send_strings(reply)
end
def send_result(result)
reply = [raw_address, "", result.to_json]
@socket.send_strings(reply)
end
def handle
begin
@parsed_msg = JSON.parse(raw_msg)
rescue JSON::ParserError => e
req.send_error({ status: :parse_error })
return
end
action = @parsed_msg["action"]
if action.nil?
req.send_error({ status: :no_action })
else
yield(action)
end
end
end
end