public void SendPacket(StreamBuffer buffer, Action<StreamBuffer> onSent = null)
{
try
{
lock (_session)
{
if (_session.Socket == null)
return;
// ReadIndex가 OnSocket_Send에서 사용되므로 ReadIndex를 초기화해야 한다.
buffer.ResetReadIndex();
SocketAsyncEventArgs saea = new SocketAsyncEventArgs();
saea.Completed += SendComplete;
saea.SetBuffer(buffer.Buffer, 0, buffer.WrittenBytes);
if (onSent != null)
saea.UserToken = new NetworkSendToken(buffer, onSent);
if (_session.Socket.SendAsync(saea) == false)
ReceiveComplete(null, saea);
}
}
catch (SocketException)
{
}
catch (Exception e)
{
Logger.Err(LogMask.Aegis, e.ToString());
}
}