Example #1
0
        public List <BasePacket> ProcessReceivedDataReq()
        {
            List <BasePacket> packets = new List <BasePacket>();

            //Parse packets
            short rSize;
            int   pos = 0;

            byte[]     buf = ReceivedData.GetBuffer();
            BasePacket packet;

            do
            {
                packet = BasePacket.Deserialize(buf, ReceivedDataLength, pos, out rSize);
                if (rSize > 0 && packet != null)
                {
                    packets.Add(packet);
                    pos += rSize;
                }
            } while (rSize > 0 && packet != null);

            //Shrink stream
            if (pos > 0)
            {
                ReceivedDataLength -= pos;
                Buffer.BlockCopy(buf, pos, buf, 0, ReceivedDataLength);
                ReceivedData.SetLength(ReceivedDataLength);
            }

            return(packets);
        }
Example #2
0
        internal static void TestProtoPacketsPerf()
        {
            short      psize;
            PUserLogin p = new PUserLogin
            {
                UserName = "******",
                Password = "******"
            };

            p.Setup();
            byte[] ps = p.Serialize();
            BasePacket.Deserialize(ps, ps.Length, 0, out psize);

            HRTimer timer = HRTimer.CreateAndStart();

            Parallel.For(0, ITERATIONS_COUNT, i =>
//            for (int i = 0; i < ITERATIONS_COUNT; i++)
            {
                p.Setup();
                ps = p.Serialize();
                BasePacket.Deserialize(ps, ps.Length, 0, out psize);
            });
//            }
            System.Console.WriteLine(timer.StopWatch());
        }
Example #3
0
        private void ProcessReceivedData(TCPClientEx tcpClientEx, MemoryStream stream)
        {
            List <BasePacket> packets = new List <BasePacket>();

            byte[] buf = stream.GetBuffer();

            //Parse packets
            short      rSize;
            int        pos = 0, dataSize = (int)stream.Length;
            BasePacket packet;

            do
            {
                packet = BasePacket.Deserialize(buf, dataSize, pos, out rSize);
                if (rSize > 0 && packet != null)
                {
                    packets.Add(packet);
                    pos += rSize;
                }
            } while (rSize > 0 && packet != null);

            //Shrink stream
            if (pos > 0)
            {
                Buffer.BlockCopy(buf, pos, buf, 0, dataSize - pos);
                stream.SetLength(dataSize - pos);
            }

            //Fire ClientDataReceived event
            if (ClientDataReceived != null && packets.Count > 0)
            {
                ClientDataReceived(tcpClientEx, packets);
            }
        }