ReportDisconnectedClient() private method

private ReportDisconnectedClient ( ) : void
return void
Example #1
0
        void ProcessDisconnect()
        {
            int oldState, newState;

            do
            {
                oldState = _state;
                newState = (oldState & ~(int)(State.Disconnect | State.Aborting));
            } while (Interlocked.CompareExchange(ref _state, newState, oldState) != oldState);
            _socket = null;
            _server.ReportDisconnectedClient();
            _handler.PrepareAccept();
        }
Example #2
0
        void ProcessDisconnect()
        {
            bool delayedAccept;
            int  oldState, newState;

            do
            {
                oldState      = _state;
                delayedAccept = (oldState & (int)State.Receive) != 0;
                newState      = (oldState & ~(int)(State.Disconnect | State.Aborting)) | (delayedAccept ? (int)State.DelayedAccept : 0);
            } while (Interlocked.CompareExchange(ref _state, newState, oldState) != oldState);
            _socket = null;
            _server.ReportDisconnectedClient();
            if (!delayedAccept)
            {
                _handler.PrepareAccept();
            }
        }
Example #3
0
        void ProcessDisconnect()
        {
            bool delayedAccept;
            int  oldState, newState;

            do
            {
                oldState      = _state;
                delayedAccept = (oldState & (int)State.Receive) != 0;
                newState      = (oldState & ~(int)State.Disconnect) | (delayedAccept ? (int)State.DelayedAccept : 0);
            } while (Interlocked.CompareExchange(ref _state, newState, oldState) != oldState);
            if (!RuntimeCorrectlyImplementsDisconnectReuseSocket)
            {
                _acceptEvent.AcceptSocket = null;
                _socket.Close();
                _socket.Dispose();
            }
            _socket = null;
            _server.ReportDisconnectedClient();
            if (!delayedAccept)
            {
                _handler.PrepareAccept();
            }
        }