/// <summary> /// Send the specified packet. Marks the buffer as used. /// </summary> public void SendTcpPacket (TNBuffer buffer) { buffer.MarkAsUsed(); if (mSocket != null && mSocket.Connected) { buffer.BeginReading(); lock (mOut) { mOut.Enqueue(buffer); if (mOut.Count == 1) { try { if (onDebug != null) { onDebug(this.serverName, "SendTcpPacket, size: " + buffer.size); } // If it's the first packet, let's begin the send process lastSendTime = DateTime.Now.Ticks / 10000; mSocket.BeginSend(buffer.buffer, buffer.position, buffer.size, SocketFlags.None, OnSend, buffer); } catch (System.Exception ex) { Error(ex.Message); Close(false); Release(); } } } } else buffer.Recycle(); }