Beispiel #1
0
        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");
        }