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 Update() { var viewModel = new HostLoadIndicatorViewModel(_sessionProvider, _coreShell); var eventArgs = new HostLoadChangedEventArgs(_hostLoad); _sessionProvider.HostLoadChanged += Raise.Event <EventHandler <HostLoadChangedEventArgs> >(_sessionProvider, eventArgs); viewModel.CpuLoad.Should().Be(30); viewModel.MemoryLoad.Should().Be(40); viewModel.NetworkLoad.Should().Be(50); viewModel.Tooltip.Should().Contain("30").And.Contain("40").And.Contain("50"); }
public async Task Update() { var viewModel = new HostLoadIndicatorViewModel(_sessionProvider, _services.MainThread()); var eventArgs = new HostLoadChangedEventArgs(_hostLoad); _sessionProvider.HostLoadChanged += Raise.Event <EventHandler <HostLoadChangedEventArgs> >(_sessionProvider, eventArgs); await UIThreadHelper.Instance.DoEventsAsync(); // Event is dispatched to main thread viewModel.CpuLoad.Should().Be(30); viewModel.MemoryLoad.Should().Be(40); viewModel.NetworkLoad.Should().Be(50); viewModel.Tooltip.Should().Contain("30").And.Contain("40").And.Contain("50"); }