public ConnectionManager(IStatusBar statusBar, IRSessionProvider sessionProvider, IRSettings settings, IRInteractiveWorkflow interactiveWorkflow) { _statusBar = statusBar; _sessionProvider = sessionProvider; _brokerConnector = interactiveWorkflow.BrokerConnector; _settings = settings; _shell = interactiveWorkflow.Shell; _statusBarViewModel = new ConnectionStatusBarViewModel(this, interactiveWorkflow.Shell); _disposableBag = DisposableBag.Create <ConnectionManager>() .Add(_statusBarViewModel) .Add(() => _brokerConnector.BrokerChanged -= BrokerChanged) .Add(() => interactiveWorkflow.RSession.Connected -= RSessionOnConnected) .Add(() => interactiveWorkflow.RSession.Disconnected -= RSessionOnDisconnected); _brokerConnector.BrokerChanged += BrokerChanged; // TODO: Temporary solution - need to separate RHost errors and network connection issues interactiveWorkflow.RSession.Connected += RSessionOnConnected; interactiveWorkflow.RSession.Disconnected += RSessionOnDisconnected; _shell.DispatchOnUIThread(() => _disposableBag.Add(_statusBar.AddItem(new ConnectionStatusBar { DataContext = _statusBarViewModel }))); // Get initial values var connections = GetConnectionsFromSettings(); _connections = new ConcurrentDictionary <Uri, IConnection>(connections); UpdateRecentConnections(); SwitchBrokerToLastConnection(); }
public ConnectionManager(IStatusBar statusBar, IRSettings settings, IRInteractiveWorkflow interactiveWorkflow) { _statusBar = statusBar; _sessionProvider = interactiveWorkflow.RSessions; _settings = settings; _interactiveWorkflow = interactiveWorkflow; _shell = interactiveWorkflow.Shell; _securityService = _shell.Services.Security; _statusBarViewModel = new ConnectionStatusBarViewModel(this, interactiveWorkflow.Shell); _hostLoadIndicatorViewModel = new HostLoadIndicatorViewModel(_sessionProvider, interactiveWorkflow.Shell); _disposableBag = DisposableBag.Create <ConnectionManager>() .Add(_statusBarViewModel) .Add(_hostLoadIndicatorViewModel) .Add(() => _sessionProvider.BrokerStateChanged -= BrokerStateChanged) .Add(() => _interactiveWorkflow.RSession.Connected -= SessionConnected) .Add(() => _interactiveWorkflow.RSession.Disconnected -= SessionDisconnected) .Add(() => _interactiveWorkflow.ActiveWindowChanged -= ActiveWindowChanged); _sessionProvider.BrokerStateChanged += BrokerStateChanged; _interactiveWorkflow.RSession.Connected += SessionConnected; _interactiveWorkflow.RSession.Disconnected += SessionDisconnected; _interactiveWorkflow.ActiveWindowChanged += ActiveWindowChanged; // Get initial values var connections = CreateConnectionList(); _connections = new ConcurrentDictionary <string, IConnection>(connections); UpdateRecentConnections(save: false); CompleteInitializationAsync().DoNotWait(); }
public void StateChanges() { var m = new ConnectionStatusBarViewModel(_cm, _shell); _cm.IsConnected.Returns(true); _cm.ConnectionStateChanged += Raise.EventWith(_cm, EventArgs.Empty); m.IsConnected.Should().BeTrue(); m.IsRunning.Should().BeFalse(); _cm.IsRunning.Returns(true); _cm.ConnectionStateChanged += Raise.EventWith(_cm, EventArgs.Empty); m.IsConnected.Should().BeTrue(); m.IsRunning.Should().BeTrue(); _cm.IsRunning.Returns(false); _cm.ConnectionStateChanged += Raise.EventWith(_cm, EventArgs.Empty); m.IsConnected.Should().BeTrue(); m.IsRunning.Should().BeFalse(); _cm.IsConnected.Returns(false); _cm.ConnectionStateChanged += Raise.EventWith(_cm, EventArgs.Empty); m.IsConnected.Should().BeFalse(); m.IsRunning.Should().BeFalse(); }
public void Construction() { var m = new ConnectionStatusBarViewModel(_cm, _shell.Services); m.SelectedConnection.Should().BeNullOrEmpty(); m.IsActive.Should().BeFalse(); m.IsConnected.Should().BeFalse(); m.IsRunning.Should().BeFalse(); }
public void ConnectStates() { var m = new ConnectionStatusBarViewModel(_cm, _shell.Services); m.IsConnected = true; m.IsRunning.Should().BeFalse(); m.IsRunning = true; m.IsRunning = false; m.IsConnected.Should().BeTrue(); }
public ConnectionManager(IStatusBar statusBar, IRSettings settings, IRInteractiveWorkflow interactiveWorkflow) { _statusBar = statusBar; _sessionProvider = interactiveWorkflow.RSessions; _settings = settings; _shell = interactiveWorkflow.Shell; _statusBarViewModel = new ConnectionStatusBarViewModel(this, interactiveWorkflow.Shell); _disposableBag = DisposableBag.Create <ConnectionManager>() .Add(_statusBarViewModel) .Add(() => _sessionProvider.BrokerStateChanged -= BrokerStateChanged); _sessionProvider.BrokerStateChanged += BrokerStateChanged; // Get initial values var userConnections = CreateConnectionList(); _userConnections = new ConcurrentDictionary <Uri, IConnection>(userConnections); UpdateRecentConnections(save: false); CompleteInitializationAsync().DoNotWait(); }
public async Task StateChanges() { var m = new ConnectionStatusBarViewModel(_cm, _shell.Services); _cm.IsConnected.Returns(true); _cm.ConnectionStateChanged += Raise.EventWith(_cm, EventArgs.Empty); await UIThreadHelper.Instance.DoEventsAsync(); // Event is dispatched to main thread m.IsConnected.Should().BeTrue(); m.IsRunning.Should().BeFalse(); _cm.IsRunning.Returns(true); _cm.ConnectionStateChanged += Raise.EventWith(_cm, EventArgs.Empty); await UIThreadHelper.Instance.DoEventsAsync(); // Event is dispatched to main thread m.IsConnected.Should().BeTrue(); m.IsRunning.Should().BeTrue(); _cm.IsRunning.Returns(false); _cm.ConnectionStateChanged += Raise.EventWith(_cm, EventArgs.Empty); await UIThreadHelper.Instance.DoEventsAsync(); // Event is dispatched to main thread m.IsConnected.Should().BeTrue(); m.IsRunning.Should().BeFalse(); _cm.IsConnected.Returns(false); _cm.ConnectionStateChanged += Raise.EventWith(_cm, EventArgs.Empty); await UIThreadHelper.Instance.DoEventsAsync(); // Event is dispatched to main thread m.IsConnected.Should().BeFalse(); m.IsRunning.Should().BeFalse(); }