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