public async Task WaitForServerState(PythonServerState state) { var waitEvent = new ManualResetEventSlim(false); _serverStateReplaySubject .Where(serverState => serverState == state) .Subscribe(serverState => waitEvent.Set()); await waitEvent.WaitHandle.AsTask(); }
private void HandleServerStatusChange(PythonServerState state) { ServerState = state; switch (state) { case PythonServerState.Created: break; case PythonServerState.Starting: break; case PythonServerState.Running: IsRunning = true; break; case PythonServerState.Closing: break; case PythonServerState.Closed: IsRunning = false; IsAuthenticated = false; break; case PythonServerState.Authenticating: break; case PythonServerState.AwaitingAuthenticationToken: break; case PythonServerState.Authenticated: IsAuthenticated = true; break; case PythonServerState.Error: break; case PythonServerState.AuthenticationError: break; default: throw new ArgumentOutOfRangeException(nameof(state), state, null); } }
private void PublishServerState(PythonServerState state) => _serverStateSubject?.OnNext(state);