Пример #1
0
        //public void OnResponse_Parser(MemoryStream stream, uint msgId)
        //{
        //    Parser.Responser_Parser(msgId, stream, DateTime.Now, 0);
        //    stream.Position = 0;
        //}

        public override void Recv(MemoryStream stream)
        {
            int offset = 0;
            int pos    = 0;

            byte[] buffer = stream.GetBuffer();

            while (stream.Length > sizeof(UInt16))
            {
                UInt16 size = BitConverter.ToUInt16(buffer, offset);
                offset += sizeof(UInt16);
                if (size > stream.Length - offset)
                {
                    break;
                }
                Packet packet = packetHandler.Unpack(buffer, size, ref offset);
                lock (m_msgQueue)
                {
                    m_msgQueue.Enqueue(packet);
                }
                offset = (size + offset);
                pos    = offset;
            }
            stream.Seek(pos, SeekOrigin.Begin);
        }