module Raft4r::RPC::RPCMachine

Public Instance Methods

call_method(conn, r) click to toggle source
# File lib/raft4r/rpc_base.rb, line 16
def call_method conn, r
        @req_pool ||= Hash.new
        # if the machine supports async call,
        # try it first
        if self.respond_to? :"Async#{r.method}"
                @req_pool[r.to_id] = [conn, r]
                self.__send__ r.method.to_sym, r
        else
                v = self.__send__ r.method.to_sym, r
                p = Marshal.dump Response.new(@node_id, r.req_id, 0, v)
                conn.send_data p
        end
end
response_method(req, resp) click to toggle source
# File lib/raft4r/rpc_base.rb, line 30
def response_method req, resp
        r = @req_pool[req.to_id]
        return unless r
        p = Marshal.dump Response.new(@node_id, req.req_id, 0, resp)
        r[0].send_data p
        #r[0].close_connection_after_writing
        @req_pool.delete req.to_id
        #LOGGER.info req.inspect
end