def encode(self): oos = JceOutputStream() oos.write(self.__mapv, 0, self.__buffer) self.__code.iVersion = 2 self.__code.sBuffer = oos.getBuffer() sos = JceOutputStream() RequestPacket.writeTo(sos, self.__code) return struct.pack('!i', 4 + len(sos.getBuffer())) + sos.getBuffer()
def tars_invoke(self, cPacketType, sFuncName, sBuffer, context, status): ''' @brief: TARS协议同步方法调用 @param cPacketType: 请求包类型 @type cPacketType: int @param sFuncName: 调用函数名 @type sFuncName: str @param sBuffer: 序列化后的发送参数 @type sBuffer: str @param context: 上下文件信息 @type context: ServantProxy.mapcls_context @param status: 状态信息 @type status: @return: 响应报文 @rtype: ResponsePacket ''' tarsLogger.debug('ServantProxy:tars_invoke, func: %s', sFuncName) req = RequestPacket() req.iVersion = ServantProxy.TARSVERSION req.cPacketType = cPacketType req.iMessageType = ServantProxy.TARSMESSAGETYPENULL req.iRequestId = 0 req.sServantName = self.tars_name() req.sFuncName = sFuncName req.sBuffer = sBuffer req.iTimeout = self.tars_timeout() reqmsg = ReqMessage() reqmsg.type = ReqMessage.SYNC_CALL reqmsg.servant = self reqmsg.lock = threading.Condition() reqmsg.request = req reqmsg.begtime = time.time() # # test reqmsg.isHash = True reqmsg.isConHash = True reqmsg.hashCode = 123456 rsp = None try: rsp = self.__invoke(reqmsg) except exception.TarsSyncCallTimeoutException: if reqmsg.adapter: reqmsg.adapter.finishInvoke(True) raise except TarsException: raise except: raise TarsException('ServantProxy::tars_invoke excpetion') if reqmsg.adapter: reqmsg.adapter.finishInvoke(False) return rsp
def encode(self): oos = TarsOutputStream(); oos.write(self.__mapv, 0, self.__buffer); self.__code.iVersion = 2; self.__code.sBuffer = oos.getBuffer(); sos = TarsOutputStream(); RequestPacket.writeTo(sos, self.__code); return struct.pack('!i', 4 + len(sos.getBuffer())) + sos.getBuffer();
def packReq(self): ''' @brief: 序列化请求报文 @return: 序列化后的请求报文 @rtype: str ''' if not self.request: return '' oos = TarsOutputStream() RequestPacket.writeTo(oos, self.request) reqpkt = oos.getBuffer() plen = len(reqpkt) + 4 reqpkt = struct.pack('!i', plen) + reqpkt return reqpkt
def tars_invoke_async(self, cPacketType, sFuncName, sBuffer, context, status, callback): ''' @brief: TARS协议同步方法调用 @param cPacketType: 请求包类型 @type cPacketType: int @param sFuncName: 调用函数名 @type sFuncName: str @param sBuffer: 序列化后的发送参数 @type sBuffer: str @param context: 上下文件信息 @type context: ServantProxy.mapcls_context @param status: 状态信息 @type status: @param callback: 异步调用回调对象 @type callback: ServantProxyCallback的子类 @return: 响应报文 @rtype: ResponsePacket ''' tarsLogger.debug('ServantProxy:tars_invoke') req = RequestPacket() req.iVersion = ServantProxy.TARSVERSION req.cPacketType = cPacketType if callback else ServantProxy.TARSONEWAY req.iMessageType = ServantProxy.TARSMESSAGETYPENULL req.iRequestId = 0 req.sServantName = self.tars_name() req.sFuncName = sFuncName req.sBuffer = sBuffer req.iTimeout = self.tars_timeout() reqmsg = ReqMessage() reqmsg.type = ReqMessage.ASYNC_CALL if callback else ReqMessage.ONE_WAY reqmsg.callback = callback reqmsg.servant = self reqmsg.request = req reqmsg.begtime = time.time() rsp = None try: rsp = self.__invoke(reqmsg) except TarsException: raise except Exception: raise TarsException('ServantProxy::tars_invoke excpetion') if reqmsg.adapter: reqmsg.adapter.finishInvoke(False) return rsp
def tars_invoke_async(self, cPacketType, sFuncName, sBuffer, context, status, callback): ''' @brief: TARS协议同步方法调用 @param cPacketType: 请求包类型 @type cPacketType: int @param sFuncName: 调用函数名 @type sFuncName: str @param sBuffer: 序列化后的发送参数 @type sBuffer: str @param context: 上下文件信息 @type context: ServantProxy.mapcls_context @param status: 状态信息 @type status: @param callback: 异步调用回调对象 @type callback: ServantProxyCallback的子类 @return: 响应报文 @rtype: ResponsePacket ''' tarsLogger.debug('ServantProxy:tars_invoke') req = RequestPacket() req.iVersion = ServantProxy.TARSVERSION req.cPacketType = cPacketType if callback else ServantProxy.TARSONEWAY req.iMessageType = ServantProxy.TARSMESSAGETYPENULL req.iRequestId = 0; req.sServantName = self.tars_name() req.sFuncName = sFuncName req.sBuffer = sBuffer req.iTimeout= self.tars_timeout() reqmsg = ReqMessage() reqmsg.type = ReqMessage.ASYNC_CALL if callback else ReqMessage.ONE_WAY reqmsg.callback = callback reqmsg.servant = self reqmsg.request = req reqmsg.begtime = time.time() rsp = None try: rsp = self.__invoke(reqmsg) except TarsException: raise except: raise TarsException('ServantProxy::tars_invoke excpetion') if reqmsg.adapter: reqmsg.adapter.finishInvoke(False) return rsp
def tars_invoke(self, cPacketType, sFuncName, sBuffer, context, status): ''' @brief: TARS协议同步方法调用 @param cPacketType: 请求包类型 @type cPacketType: int @param sFuncName: 调用函数名 @type sFuncName: str @param sBuffer: 序列化后的发送参数 @type sBuffer: str @param context: 上下文件信息 @type context: ServantProxy.mapcls_context @param status: 状态信息 @type status: @return: 响应报文 @rtype: ResponsePacket ''' tarsLogger.debug('ServantProxy:tars_invoke, func: %s', sFuncName) req = RequestPacket() req.iVersion = ServantProxy.TARSVERSION req.cPacketType = cPacketType req.iMessageType = ServantProxy.TARSMESSAGETYPENULL req.iRequestId = 0; req.sServantName = self.tars_name() req.sFuncName = sFuncName req.sBuffer = sBuffer req.iTimeout= self.tars_timeout() reqmsg = ReqMessage() reqmsg.type = ReqMessage.SYNC_CALL reqmsg.servant = self reqmsg.lock = threading.Condition() reqmsg.request = req reqmsg.begtime = time.time() rsp = None try: rsp = self.__invoke(reqmsg) except TarsSyncCallTimeoutException, msg: if reqmsg.adapter: reqmsg.adapter.finishInvoke(True) raise
def __init__(self): self.__mapa = util.mapclass(util.string, util.bytes) self.__mapv = util.mapclass(util.string, self.__mapa) self.__buffer = self.__mapv() self.__code = RequestPacket()
class TarsUniPacket(object): def __init__(self): self.__mapa = util.mapclass(util.string, util.bytes) self.__mapv = util.mapclass(util.string, self.__mapa) self.__buffer = self.__mapv() self.__code = RequestPacket() @property def servant(self): return self.__code.sServantName @servant.setter def servant(self, value): self.__code.sServantName = value @property def func(self): return self.__code.sFuncName @func.setter def func(self, value): self.__code.sFuncName = value @property def requestid(self): return self.__code.iRequestId @requestid.setter def requestid(self, value): self.__code.iRequestId = value @property def result_code(self): if self.__code.status.has_key("STATUS_RESULT_CODE") == False: return 0 return string.atoi(self.__code.status["STATUS_RESULT_CODE"]) @property def result_desc(self): if self.__code.status.has_key("STATUS_RESULT_DESC") == False: return '' return self.__code.status["STATUS_RESULT_DESC"] def put(self, vtype, name, value): oos = TarsOutputStream() oos.write(vtype, 0, value) self.__buffer[name] = { vtype.__tars_class__: oos.getBuffer() } def get(self, vtype, name): if self.__buffer.has_key(name) == False: raise Exception("UniAttribute not found key:%s,type:%s" % (name, vtype.__tars_class__)) t = self.__buffer[name] if t.has_key(vtype.__tars_class__) == False: raise Exception("UniAttribute not found type:" + vtype.__tars_class__) o = TarsInputStream(t[vtype.__tars_class__]) return o.read(vtype, 0, True) def encode(self): oos = TarsOutputStream() oos.write(self.__mapv, 0, self.__buffer) self.__code.iVersion = 2 self.__code.sBuffer = oos.getBuffer() sos = TarsOutputStream() RequestPacket.writeTo(sos, self.__code) return struct.pack('!i', 4 + len(sos.getBuffer())) + sos.getBuffer() def decode(self, buf): ois = TarsInputStream(buf[4:]) self.__code = RequestPacket.readFrom(ois) sis = TarsInputStream(self.__code.sBuffer) self.__buffer = sis.read(self.__mapv, 0, True) def clear(self): self.__code.__init__() def haskey(self, name): return self.__buffer.has_key(name)
def decode(self, buf): ois = TarsInputStream(buf[4:]) self.__code = RequestPacket.readFrom(ois) sis = TarsInputStream(self.__code.sBuffer) self.__buffer = sis.read(self.__mapv, 0, True)
def decode(self, buf): ois = TarsInputStream(buf[4:]); self.__code = RequestPacket.readFrom(ois); sis = TarsInputStream(self.__code.sBuffer); self.__buffer = sis.read(self.__mapv, 0, True);
def __init__(self): self.__mapa = util.mapclass(util.string, util.bytes); self.__mapv = util.mapclass(util.string, self.__mapa); self.__buffer = self.__mapv(); self.__code = RequestPacket();
class TarsUniPacket(object): def __init__(self): self.__mapa = util.mapclass(util.string, util.bytes); self.__mapv = util.mapclass(util.string, self.__mapa); self.__buffer = self.__mapv(); self.__code = RequestPacket(); @property def servant(self): return self.__code.sServantName; @servant.setter def servant(self, value): self.__code.sServantName = value; @property def func(self): return self.__code.sFuncName; @func.setter def func(self, value): self.__code.sFuncName = value; @property def requestid(self): return self.__code.iRequestId; @requestid.setter def requestid(self, value): self.__code.iRequestId = value; @property def result_code(self): if self.__code.status.has_key("STATUS_RESULT_CODE") == False: return 0; return string.atoi(self.__code.status["STATUS_RESULT_CODE"]); @property def result_desc(self): if self.__code.status.has_key("STATUS_RESULT_DESC") == False: return ''; return self.__code.status["STATUS_RESULT_DESC"]; def put(self, vtype, name, value): oos = TarsOutputStream(); oos.write(vtype, 0, value); self.__buffer[name] = {vtype.__tars_class__ : oos.getBuffer()}; def get(self, vtype, name): if self.__buffer.has_key(name) == False: raise Exception("UniAttribute not found key:%s,type:%s" % (name, vtype.__tars_class__)); t = self.__buffer[name]; if t.has_key(vtype.__tars_class__) == False: raise Exception("UniAttribute not found type:" + vtype.__tars_class__); o = TarsInputStream(t[vtype.__tars_class__]); return o.read(vtype, 0, True); def encode(self): oos = TarsOutputStream(); oos.write(self.__mapv, 0, self.__buffer); self.__code.iVersion = 2; self.__code.sBuffer = oos.getBuffer(); sos = TarsOutputStream(); RequestPacket.writeTo(sos, self.__code); return struct.pack('!i', 4 + len(sos.getBuffer())) + sos.getBuffer(); def decode(self, buf): ois = TarsInputStream(buf[4:]); self.__code = RequestPacket.readFrom(ois); sis = TarsInputStream(self.__code.sBuffer); self.__buffer = sis.read(self.__mapv, 0, True); def clear(self): self.__code.__init__(); def haskey(self, name): return self.__buffer.has_key(name);
def taf_invoke(self, cPacketType, sFuncName, sBuffer, context, status): req = RequestPacket() req.iVersion = ServantProxy.JCEVERSION req.cPacketType = cPacketType req.iMessageType = ServantProxy.JCEMESSAGETYPENULL req.iRequestId = 0 req.sServantName = self.sServantName req.sFuncName = sFuncName req.sBuffer = sBuffer req.iTimeout = self.iTimeout oos = JceOutputStream() RequestPacket.writeTo(oos, req) reqpkt = oos.getBuffer() plen = len(reqpkt) + 4 reqpkt = struct.pack('!i', plen) + reqpkt ret = self.__trans(reqpkt, plen) if len(ret) == 0: raise Exception('server do not response') ios = JceInputStream(ret) rsp = ResponsePacket.readFrom(ios) if rsp.iRet != 0: raise Exception("Taf Error:%d" % rsp.iRet) return rsp