private void OnAcceptEventCompleted(object sender, SocketAsyncEventArgs e)
{
if(e.SocketError == SocketError.OperationAborted)
{
return;
}
if(e.SocketError != SocketError.Success)
{
Log.ErrorFormat("accept failed, error={0}", e.SocketError);
Dispose();
return;
}
var handler = _handler;
if(handler == null)
{
DisposeOf(e.AcceptSocket);
return;
}
try
{
handler.Handle(e.AcceptSocket);
e.AcceptSocket = null;
AcceptAsync();
}
catch(Exception exc)
{
Log.Fatal(exc);
DisposeOf(e.AcceptSocket);
Dispose();
}
}