public unsafe void QueuePacket(IMessage message, PacketId packetId, IPlugin plugin, Channel channel) { lock (AddQueueLock) { if (sizeCounter > MaxPacketQueueSize) { while (packetQueue.Count > 0) { SendQueue(); } } NetworkPayloadWriter temp = message.WritePacket(message, conn); message.RawSize = temp.Length - conn.HEADER_SIZE; byte[] packet = temp.GetPayload(); lock (packetQueue) { packetQueue.Enqueue(new PacketQueueInfo(packet, packetId, plugin, channel, conn.messageHandler.GetMessageId(message.GetType()))); sizeCounter += packet.Length; } if (!threadRunning) { threadRunning = true; ThreadPool.QueueUserWorkItem((object obj) => WorkerThread()); } arSizeUpdate.Set(); } }
public byte[] ToByteArray(Connection connection) { NetworkPayloadWriter pw = new NetworkPayloadWriter(connection); WriteHeader(null, 0, 0, pw); return(pw.GetPayload()); }