コード例 #1
0
 protected virtual void AcceptedSession(SessionAcceptedEventArgs sessionAcceptedEventArgs)
 {
     if (SessionAccepted != null)
     {
         try
         {
             SessionAccepted(this, sessionAcceptedEventArgs);
         }
         catch (Exception ex)
         {
             CaughtException(ex);
         }
     }
 }
コード例 #2
0
        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);
                }
            }
        }