protected virtual void AcceptedSession(SessionAcceptedEventArgs sessionAcceptedEventArgs) { if (SessionAccepted != null) { try { SessionAccepted(this, sessionAcceptedEventArgs); } catch (Exception ex) { CaughtException(ex); } } }
internal void ProcessAccept(SocketAsyncEventArgs args) { try { if (args.SocketError == SocketError.Success) { base.IncrementAcceptedCount(); AsyncTcpSession session = new AsyncTcpSession(args.AcceptSocket) { PacketDecoder = base.PacketDecoder, PacketEncoder = base.PacketEncoder, }; SessionAcceptedEventArgs sessionAcceptedEventArgs = new SessionAcceptedEventArgs(this, session); session.Closed += base.SessionClosedEventHandler; session.ExceptionCaught += base.SessionExceptionCaughtEventHandler; AddConnectedSession(session); lock (_pendingSockets) { _pendingSockets.Remove(args.AcceptSocket); } session.SocketReceiveAsync(); AcceptedSession(sessionAcceptedEventArgs); } } catch (Exception ex) { CaughtException(ex); } finally { args.AcceptSocket = null; try { DoAcceptAsync(); } catch (Exception ex) { CaughtException(ex); } } }