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; } }
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); } }