Example #1
0
        private void Send(Packet packet, bool client)
        {
            lock (client ? _clientLock : _serverLock)
            {
                MemoryStream ms = new MemoryStream();
                using (PacketWriter w = new PacketWriter(ms))
                {
                    w.Write(0);
                    w.Write(packet.Id);
                    packet.Write(w);
                }

                byte[] data = ms.ToArray();
                PacketWriter.BlockCopyInt32(data, data.Length);
                if (client)
                {
                    ConsoleUtilities.VerboseWriteLine($"Sent {packet.Type} to the client");
                    _clientSendCipher.Cipher(data);
                    LoggingUtilities.LogPacketToFile(packet, client);
                    if (!_closed)
                    {
                        _clientStream.Write(data, 0, data.Length);
                    }
                }
                else
                {
                    ConsoleUtilities.VerboseWriteLine($"Sent {packet.Type} to the server");
                    _serverSendCipher.Cipher(data);
                    if (!_closed)
                    {
                        _serverStream.Write(data, 0, data.Length);
                    }
                }
            }
        }