示例#1
0
 public override void ReadFrom(TarsInputStream _is)
 {
     if (_iVer == Const.TUP_VERSION_3)
     {
         _new_data = (Dictionary <string, byte[]>)_is.ReadMap <Dictionary <string, byte[]> >(_new_data, 0, false);
     }
     else
     {
         _data = (Dictionary <string, Dictionary <string, byte[]> >)_is.ReadMap <Dictionary <string, Dictionary <string, byte[]> > >(_data, 0, false);
     }
 }
示例#2
0
 public virtual void DecodeResponse(TarsInputStream input, RequestPacket response)
 {
     response.PacketType  = input.Read((byte)0, 2, true);
     response.RequestId   = input.Read(0, 3, true);
     response.MessageType = input.Read(0, 4, true);
     response.Ret         = input.Read(0, 5, true);
     response.Buffer      = input.Read(new byte[0], 6, true);
     response.Status      = input.ReadMap <string, string>(new Dictionary <string, string>(), 7, false);
     response.ResultDesc  = input.ReadString(8, false);
     response.Context     = input.ReadMap <string, string>(new Dictionary <string, string>(), 9, false);
 }
示例#3
0
 public override void ReadFrom(TarsInputStream inputStream)
 {
     if (IsPacketTypeTup3)
     {
         newData = (Dictionary <string, byte[]>)inputStream.ReadMap(newData, 0, false);
     }
     else
     {
         data = (Dictionary <string, Dictionary <string, byte[]> >)inputStream.ReadMap(data, 0, false);
     }
 }
示例#4
0
 public virtual void DecodeRequest(TarsInputStream input, RequestPacket request)
 {
     request.PacketType  = input.Read(request.PacketType, 2, true);
     request.MessageType = input.Read(request.MessageType, 3, true);
     request.RequestId   = input.Read(request.RequestId, 4, true);
     request.ServantName = input.ReadString(5, true);
     request.FuncName    = input.ReadString(6, true);
     request.Buffer      = input.ReadBytes(7, true);
     request.Timeout     = input.Read(request.Timeout, 8, true);
     request.Context     = input.ReadMap <string, string>(new Dictionary <string, string>(), 9, false);
     request.Status      = input.ReadMap <string, string>(new Dictionary <string, string>(), 10, false);
 }
示例#5
0
 public override void DecodeResponse(TarsInputStream input, RequestPacket response)
 {
     response.PacketType  = input.Read((byte)0, 2, true);
     response.MessageType = input.Read(0, 3, true);
     response.RequestId   = input.Read(0, 4, true);
     response.ServantName = input.ReadString(5, true);
     response.FuncName    = input.ReadString(6, true);
     response.Buffer      = input.Read(new byte[0], 7, true);
     response.Timeout     = input.Read(0, 8, true);
     response.Status      = input.ReadMap <string, string>(new Dictionary <string, string>(), 9, false);
     response.Context     = input.ReadMap <string, string>(new Dictionary <string, string>(), 10, false);
     response.GetRetToStatus();
 }
示例#6
0
        internal void Decode(byte[] buffer)
        {
            TarsInputStream tis = new TarsInputStream(buffer);

            tis.SetServerEncoding(EncodeName);
            if (IsVersionTup3)
            {
                tis.ReadMap(newData, 0, false);
            }
            else
            {
                tis.ReadMap(data, 0, false);
            }
        }
示例#7
0
 public void DecodeTup3(TarsInputStream inputStream, int Index = 0)
 {
     Version = Const.PacketTypeTup3;
     inputStream.SetServerEncoding(EncodeName);
     newData = new Dictionary <string, byte[]>();
     inputStream.ReadMap <string, byte[]>(newData, 0, false);
 }
示例#8
0
 public void Decode(byte[] buffer, int Index = 0)
 {
     try
     {
         // try tup2
         _is.Wrap(buffer, Index);
         _is.SetServerEncoding(_encodeName);
         _iVer = Const.TUP_VERSION_2;
         _data = (Dictionary <string, Dictionary <string, byte[]> >)_is.ReadMap <Dictionary <string, Dictionary <string, byte[]> > >(_data, 0, false);
         return;
     }
     catch
     {
         // try tup3
         _iVer = Const.TUP_VERSION_3;
         _is.Wrap(buffer, Index);
         _is.SetServerEncoding(_encodeName);
         _new_data = (Dictionary <string, byte[]>)_is.ReadMap <Dictionary <string, byte[]> >(_new_data, 0, false);
     }
 }
示例#9
0
        /**
         * Decode incoming data, fill in getable objects.
         */
        public new void Decode(byte[] buffer, int Index = 0)
        {
            if (buffer.Length < UniPacketHeadSize)
            {
                throw new ArgumentException("Decode namespace must include size head");
            }

            try
            {
                TarsInputStream _is = new TarsInputStream(buffer, UniPacketHeadSize + Index);
                _is.SetServerEncoding(EncodeName);

                // Decode the RequestPacket package.
                this.ReadFrom(_is);

                // Set the tup version.
                _iVer = _package.iVersion;

                _is = new TarsInputStream(_package.sBuffer);
                _is.SetServerEncoding(EncodeName);

                if (_package.iVersion == Const.TUP_VERSION_2)
                {
                    _data = (Dictionary <string, Dictionary <string, byte[]> >)_is.ReadMap <
                        Dictionary <string, Dictionary <string, byte[]> > >(0, false);
                }
                else
                {
                    _new_data = (Dictionary <string, byte[]>)_is.ReadMap <Dictionary <string, byte[]> >(0, false);
                }
            }
            catch (Exception ex)
            {
                QTrace.Trace(this + " Decode Exception: " + ex.Message);
                throw (ex);
            }
        }