Esempio n. 1
0
        protected virtual async Task Cleanup()
        {
            var oldState = State;

            State = ConnectionState.Disconnecting;

            await _engine.Disconnect().ConfigureAwait(false);

            _cancelSource = null;
            _connectedEvent.Reset();

            if (oldState == ConnectionState.Connecting || oldState == ConnectionState.Connected)
            {
                var ex = _taskManager.Exception;
                if (ex == null)
                {
                    Logger.Info("Disconnected");
                }
                else
                {
                    Logger.Error("Disconnected", ex);
                }
                State = ConnectionState.Disconnected;
                OnDisconnected(!_taskManager.WasStopExpected, _taskManager.Exception);
            }
            else
            {
                State = ConnectionState.Disconnected;
            }
        }
Esempio n. 2
0
        protected virtual async Task Cleanup()
        {
            var disconnectState = _disconnectState;

            _disconnectState = WebSocketState.Disconnected;
            var wasDisconnectUnexpected = _wasDisconnectUnexpected;

            _wasDisconnectUnexpected = false;
            //Dont reset disconnectReason, we may called ThrowError() later

            await _engine.Disconnect().ConfigureAwait(false);

            _cancelTokenSource = null;
            var oldState = _state;

            _state   = (int)WebSocketState.Disconnected;
            _runTask = null;
            _connectedEvent.Reset();

            if (disconnectState == WebSocketState.Connected)
            {
                RaiseDisconnected(wasDisconnectUnexpected, _disconnectReason?.SourceException);
            }
        }