Ejemplo n.º 1
0
    def __call__(self, input_marshal_id):
        input_m = Marshal(id=input_marshal_id, should_release=False)

        input_values = []
        for input_ty in self.input_types:
            input_values += input_m.read_obj(input_ty),
        try:
            output = self.f(*input_values)
        except:
            traceback.print_exc()
            raise

        if len(self.output_types) == 0:
            # void rpc
            return 0 # mark as a NULL reply

        output_m = Marshal(should_release=False) # C++ code will release the marshal object
        if len(self.output_types) == 1:
            # single return value
            output_m.write_obj(output, self.output_types[0])
        else:
            # multiple return values
            for i in range(len(self.output_types)):
                output_m.write_obj(output[i], self.output_types[i])

        return output_m.id
Ejemplo n.º 2
0
Archivo: server.py Proyecto: DSEF/janus
    def __call__(self, input_marshal_id):
        input_m = Marshal(id=input_marshal_id, should_release=False)

        input_values = []
        for input_ty in self.input_types:
            input_values += input_m.read_obj(input_ty),
        try:
            output = self.f(*input_values)
        except:
            traceback.print_exc()
            raise

        if len(self.output_types) == 0:
            # void rpc
            return 0  # mark as a NULL reply

        output_m = Marshal(
            should_release=False)  # C++ code will release the marshal object
        if len(self.output_types) == 1:
            # single return value
            output_m.write_obj(output, self.output_types[0])
        else:
            # multiple return values
            for i in range(len(self.output_types)):
                output_m.write_obj(output[i], self.output_types[i])

        return output_m.id
Ejemplo n.º 3
0
 def async_call(self, rpc_id, req_values, req_types, rep_types):
     req_m = Marshal()
     for i in range(len(req_values)):
         req_m.write_obj(req_values[i], req_types[i])
     fu_id = _pyrpc.client_async_call(self.id, rpc_id, req_m.id)
     if fu_id is None:
         raise Exception("ENOTCONN: %s" % os.strerror(errno.ENOTCONN))
     return Future(id=fu_id, rep_types=rep_types)
Ejemplo n.º 4
0
 def async_call(self, rpc_id, req_values, req_types, rep_types):
     req_m = Marshal()
     for i in range(len(req_values)):
         req_m.write_obj(req_values[i], req_types[i])
     fu_id = _pyrpc.client_async_call(self.id, rpc_id, req_m.id)
     if fu_id is None:
         raise Exception("ENOTCONN: %s" % os.strerror(errno.ENOTCONN))
     return Future(id=fu_id, rep_types=rep_types)
Ejemplo n.º 5
0
 def sync_call(self, rpc_id, req_values, req_types, rep_types):
     req_m = Marshal()
     for i in range(len(req_values)):
         req_m.write_obj(req_values[i], req_types[i])
     error_code, rep_marshal_id = _pyrpc.client_sync_call(self.id, rpc_id, req_m.id)
     results = []
     if rep_marshal_id != 0 and error_code == 0:
         rep_m = Marshal(id=rep_marshal_id)
         for ty in rep_types:
             results += rep_m.read_obj(ty),
     return error_code, results
Ejemplo n.º 6
0
 def sync_call(self, rpc_id, req_values, req_types, rep_types):
     req_m = Marshal()
     for i in range(len(req_values)):
         req_m.write_obj(req_values[i], req_types[i])
     error_code, rep_marshal_id = _pyrpc.client_sync_call(
         self.id, rpc_id, req_m.id)
     results = []
     if rep_marshal_id != 0 and error_code == 0:
         rep_m = Marshal(id=rep_marshal_id)
         for ty in rep_types:
             results += rep_m.read_obj(ty),
     return error_code, results
Ejemplo n.º 7
0
 def udp_call(self, rpc_id, req_values, req_types, rep_types):
     req_m = Marshal()
     for i in range(len(req_values)):
         req_m.write_obj(req_values[i], req_types[i])
     return _pyrpc.client_udp_call(self.id, rpc_id, req_m.id)
Ejemplo n.º 8
0
 def udp_call(self, rpc_id, req_values, req_types, rep_types):
     req_m = Marshal()
     for i in range(len(req_values)):
         req_m.write_obj(req_values[i], req_types[i])
     return _pyrpc.client_udp_call(self.id, rpc_id, req_m.id)