/// <summary> /// Sends a packet to the remote host. /// </summary> public static INetworkPacket ReadPacket(this ConnectionState con, byte[] allData) { INetworkPacket packet; using (var memoryStream = new MemoryStream(allData)) { using (var binaryReader = new DataInputStream(memoryStream)) { long packetNumber = binaryReader.ReadLong(); binaryReader.Flush(); System.Diagnostics.Debug.WriteLine($"Read packet with ID: {packetNumber}"); Debug.WriteLine("Getting new packet by id!"); packet = DeckServiceProvider.GetNewNetworkPacketById(packetNumber); Debug.WriteLine($"Getting new packet by id [{packet.GetType().Name}] - Success!"); Debug.WriteLine($"Getting data from stream [ID:{packetNumber}]!"); packet.FromInputStream(binaryReader); Debug.WriteLine($"Getting data from stream[ID:{packetNumber}] - Success!"); packet.Execute(con); } } if (!packet.CanServerReceive()) { // throw new Exception($"Server can't receive NetworkPacket[ID: {packet.GetPacketNumber()}]."); } return(packet); }