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); }
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()); }
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); } }