private void FlushPacket(ServerGamePacket packet) { using (var stream = new MemoryStream()) using (var writer = new GamePacketWriter(stream)) { writer.Write(packet.Size); writer.Write(packet.Opcode, 16); writer.WriteBytes(packet.Data); SendRaw(stream.ToArray()); } }
/// <summary> /// Enqueue <see cref="IWritable"/> to be sent to the client. /// </summary> public void EnqueueMessage(IWritable message) { if (!MessageManager.GetOpcode(message, out GameMessageOpcode opcode)) { log.Warn("Failed to send message with no attribute!"); return; } if (opcode != GameMessageOpcode.ServerAuthEncrypted && opcode != GameMessageOpcode.ServerRealmEncrypted) { log.Trace($"Sent packet {opcode}(0x{opcode:X})."); } var packet = new ServerGamePacket(opcode, message); outgoingPackets.Enqueue(packet); }