private void Accepted(object sender, SocketAsyncEventArgs eventArgs)
{
try
{
Socket acceptedSocket = eventArgs.AcceptSocket;
if (acceptedSocket.Connected == false)
return;
Session acceptedSession = _networkChannel.PopInactiveSession();
if (acceptedSession == null)
{
acceptedSocket.Close();
Logger.Err(LogMask.Aegis, "Cannot activate any more sessions. Please check MaxSessionPoolSize.");
return;
}
acceptedSession.AttachSocket(acceptedSocket);
acceptedSession.OnSocket_Accepted();
eventArgs.AcceptSocket = null;
_listenSocket.AcceptAsync(_eventAccept);
}
catch (SocketException e)
{
if (e.SocketErrorCode != SocketError.Interrupted)
Logger.Err(LogMask.Aegis, e.ToString());
}
catch (Exception e)
{
Logger.Err(LogMask.Aegis, e.ToString());
}
}