    def unpackRspList(buf):
        '''
        @brief: 解码响应报文
        @param buf: 多个序列化后的响应报文数据
        @type buf: str
        @return: 解码出来的响应报文和解码的buffer长度
        @rtype: rsplist: 装有ResponsePacket的list
                unpacklen: int
        '''
        rsplist = []
        if not buf:
            return rsplist

        unpacklen = 0
        buf = buffer(buf)
        while True:
            if len(buf) - unpacklen < 4:
                break
            packsize = buf[unpacklen: unpacklen+4]
            packsize, = struct.unpack_from('!i', packsize)
            if len(buf) < unpacklen + packsize:
                break

            ios = TarsInputStream(buf[unpacklen+4: unpacklen+packsize])
            rsp = ResponsePacket.readFrom(ios)
            rsplist.append(rsp)
            unpacklen += packsize

        return rsplist, unpacklen
@brief: 解码响应报文
@param buf: 多个序列化后的响应报文数据
@type buf: str
@return: 解码出来的响应报文和解码的buffer长度
@rtype: rsplist: 装有ResponsePacket的list
unpacklen: int
biliup/Danmaku/tars/__TimeoutQueue.py