Пример #1
0
 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()
Пример #2
0
    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
Пример #3
0
    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(); 
Пример #4
0
    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(); 
Пример #5
0
 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
Пример #6
0
    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
Пример #7
0
    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
Пример #8
0
    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
Пример #9
0
 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()
Пример #10
0
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)
Пример #11
0
    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)
Пример #12
0
    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);
Пример #13
0
 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(); 
Пример #14
0
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);
Пример #15
0
    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