public Packet DeserializePacket(IPacketHeader packetHeader, Stream source, out object customErrorData) { customErrorData = null; SCPacketHeader scPacketHeader = packetHeader as SCPacketHeader; if (scPacketHeader == null) { Log.Warning("Packet header is invalid."); return(null); } Packet packet = null; if (scPacketHeader.IsValid) { if (scPacketHeader.Id == 4) { //BinaryReader r = new BinaryReader(source); //byte[] message = r.ReadBytes((int)(source.Length - source.Position)); //string returnStr = string.Empty; //for (int i = 0; i < message.Length; i++) //{ // returnStr += message[i].ToString("X2"); //} SCData scData = SCData.Create(); ((DataResponse)scData.GetExtensionObject()).MergeFrom(source); //Log.Info("data response {0}", scData); packet = scData; } else { packet = SCHeartBeat.Create(); Log.Info("heart response "); } } else { Log.Warning("Packet header is invalid."); } ReferencePool.Release(scPacketHeader); return(packet); }