class Floss::RPC::ZMQ::Server
Attributes
socket[RW]
Public Class Methods
new(address, &handler)
click to toggle source
Calls superclass method
Floss::RPC::Server::new
# File lib/floss/rpc/zmq.rb, line 70 def initialize(address, &handler) super async.run end
Public Instance Methods
decode_request(request)
click to toggle source
# File lib/floss/rpc/zmq.rb, line 104 def decode_request(request) command, payload = request.split(':', 2) payload = Marshal.load(payload) [command.to_sym, payload] end
encode_response(response)
click to toggle source
# File lib/floss/rpc/zmq.rb, line 100 def encode_response(response) Marshal.dump(response) end
finalize()
click to toggle source
# File lib/floss/rpc/zmq.rb, line 111 def finalize socket.close if socket end
handle(request)
click to toggle source
@param [String] request A request string containing command and payload separated by a colon.
# File lib/floss/rpc/zmq.rb, line 94 def handle(request) command, payload = decode_request(request) response = handler.call(command, payload) socket.send(encode_response(response)) end
loop!()
click to toggle source
# File lib/floss/rpc/zmq.rb, line 89 def loop! loop { handle(socket.read) } end
run()
click to toggle source
# File lib/floss/rpc/zmq.rb, line 75 def run self.socket = RepSocket.new begin info("Binding to #{address}") socket.bind(address) rescue IOError socket.close raise end async.loop! end
terminate()
click to toggle source
Calls superclass method
# File lib/floss/rpc/zmq.rb, line 115 def terminate super socket.close if socket end