public void Send(byte[] buffer, int length)
{
if (m_Socket == null)
{
return;
}
if (m_Encoder != null)
{
m_Encoder.EncodeOutgoingPacket(this, ref buffer, ref length);
}
bool shouldBegin = false;
lock (m_SendQueue)
shouldBegin = (m_SendQueue.Enqueue(buffer, length));
if (shouldBegin)
{
int sendLength = 0;
byte[] sendBuffer = m_SendQueue.Peek(ref sendLength);
try
{
m_Socket.BeginSend(sendBuffer, 0, sendLength, SocketFlags.None, OnSend, null);
m_Sending = true;
}
catch (Exception ex)
{
TraceException(ex);
Dispose(false);
}
}
}