def call(self, procedure, args): if isinstance(procedure, str): try: procedure = processor._procedures[procedure] except KeyError: raise TApplicationException( TApplicationException.UNKNOWN_METHOD, "Unknown method '{0}'".format(name)) otrans = TMemoryBuffer() oproto = TBinaryProtocol(otrans) # perf.begin('send') oproto.writeMessageBegin(procedure.name, TMessageType.CALL, self._processor.seqid) self._processor.seqid = self._processor.seqid + 1 self._processor.send_struct(Namespace(args), procedure.parameters_struct, oproto) oproto.writeMessageEnd() # perf.end('send') self._http.request('POST', self._url, otrans.getvalue(), {}) resp = self._http.getresponse() data = resp.read() iproto = TBinaryProtocol(TMemoryBuffer(data)) # perf.begin('wait') (fname, mtype, rseqid) = iproto.readMessageBegin() # perf.end('wait') # perf.begin('recv') if mtype == TMessageType.EXCEPTION: x = TApplicationException() x.read(iproto) iproto.readMessageEnd() x.args = (x.message, ) raise x result = self._processor.recv_struct(procedure.results_struct, iproto) iproto.readMessageEnd() # perf.end('recv') # perf.end('call') if result.result is not None: return result.result for field in procedure.results_struct.fields: if getattr(result, field.name) is not None: raise getattr(result, field.name) return None
def call(self, procedure, args): if isinstance(procedure, str): try: procedure = processor._procedures[procedure] except KeyError: raise TApplicationException(TApplicationException.UNKNOWN_METHOD, "Unknown method '{0}'".format(name)) otrans = TMemoryBuffer() oproto = TBinaryProtocol(otrans) # perf.begin('send') oproto.writeMessageBegin(procedure.name, TMessageType.CALL, self._processor.seqid) self._processor.seqid = self._processor.seqid + 1 self._processor.send_struct(Namespace(args), procedure.parameters_struct, oproto) oproto.writeMessageEnd() # perf.end('send') self._http.request('POST', self._url, otrans.getvalue(), {}) resp = self._http.getresponse() data = resp.read() iproto = TBinaryProtocol(TMemoryBuffer(data)) # perf.begin('wait') (fname, mtype, rseqid) = iproto.readMessageBegin() # perf.end('wait') # perf.begin('recv') if mtype == TMessageType.EXCEPTION: x = TApplicationException() x.read(iproto) iproto.readMessageEnd() x.args = (x.message,) raise x result = self._processor.recv_struct(procedure.results_struct, iproto) iproto.readMessageEnd() # perf.end('recv') # perf.end('call') if result.result is not None: return result.result for field in procedure.results_struct.fields: if getattr(result, field.name) is not None: raise getattr(result, field.name) return None
def call(self, procedure, args, iproto, oproto): # perf.begin('call') if isinstance(procedure, str): try: procedure = self._procedures[procedure] except KeyError: raise TApplicationException( TApplicationException.UNKNOWN_METHOD, "Unknown method '{0}'".format(name)) # perf.begin('send') oproto.writeMessageBegin(procedure.name, TMessageType.CALL, self.seqid) self.seqid = self.seqid + 1 self.send_struct(Namespace(args), procedure.parameters_struct, oproto) oproto.writeMessageEnd() oproto.trans.flush() # perf.end('send') # perf.begin('wait') (fname, mtype, rseqid) = iproto.readMessageBegin() # perf.end('wait') # perf.begin('recv') if mtype == TMessageType.EXCEPTION: x = TApplicationException() x.read(iproto) iproto.readMessageEnd() x.args = (x.message, ) raise x result = self.recv_struct(procedure.results_struct, iproto) iproto.readMessageEnd() # perf.end('recv') # perf.end('call') if result.result is not None: return result.result for field in procedure.results_struct.fields: if getattr(result, field.name) is not None: raise getattr(result, field.name) return None
def call(self, procedure, args, iproto, oproto): # perf.begin('call') if isinstance(procedure, str): try: procedure = self._procedures[procedure] except KeyError: raise TApplicationException(TApplicationException.UNKNOWN_METHOD, "Unknown method '{0}'".format(name)) # perf.begin('send') oproto.writeMessageBegin(procedure.name, TMessageType.CALL, self.seqid) self.seqid = self.seqid + 1 self.send_struct(Namespace(args), procedure.parameters_struct, oproto) oproto.writeMessageEnd() oproto.trans.flush() # perf.end('send') # perf.begin('wait') (fname, mtype, rseqid) = iproto.readMessageBegin() # perf.end('wait') # perf.begin('recv') if mtype == TMessageType.EXCEPTION: x = TApplicationException() x.read(iproto) iproto.readMessageEnd() x.args = (x.message,) raise x result = self.recv_struct(procedure.results_struct, iproto) iproto.readMessageEnd() # perf.end('recv') # perf.end('call') if result.result is not None: return result.result for field in procedure.results_struct.fields: if getattr(result, field.name) is not None: raise getattr(result, field.name) return None