public ConnectivityStatusViewModel(
            IReactiveTrader reactiveTrader,
            IConcurrencyService concurrencyService,
            ILoggerFactory loggerFactory,
            IProcessorMonitor processorMonitor)
        {
            _processorMonitor     = processorMonitor;
            _priceLatencyRecorder = reactiveTrader.PriceLatencyRecorder;
            var log = loggerFactory.Create(typeof(ConnectivityStatusViewModel));

            if (!_processorMonitor.IsAvailable)
            {
                CpuPercent = "N/A";
                CpuTime    = "N/A";
            }

            _subscriptions.Add(reactiveTrader.ConnectionStatusStream
                               .ObserveOn(concurrencyService.Dispatcher)
                               .SubscribeOn(concurrencyService.TaskPool)
                               .Subscribe(
                                   OnStatusChange,
                                   ex => log.Error("An error occurred within the connection status stream.", ex)));

            _subscriptions.Add(Observable
                               .Interval(StatsFrequency, concurrencyService.Dispatcher)
                               .Subscribe(_ => OnTimerTick()));
        }
        public ConnectivityStatusViewModel(
            IReactiveTrader reactiveTrader, 
            IConcurrencyService concurrencyService, 
            ILoggerFactory loggerFactory,
            IProcessorMonitor processorMonitor)
        {
            _processorMonitor = processorMonitor;
            _priceLatencyRecorder = reactiveTrader.PriceLatencyRecorder;
            var log = loggerFactory.Create(typeof (ConnectivityStatusViewModel));

            if (!_processorMonitor.IsAvailable)
            {
                CpuPercent = "N/A";
                CpuTime = "N/A";
            }

            _subscriptions.Add(reactiveTrader.ConnectionStatusStream
                .ObserveOn(concurrencyService.Dispatcher)
                .SubscribeOn(concurrencyService.TaskPool)
                .Subscribe(
                OnStatusChange,
                ex => log.Error("An error occurred within the connection status stream.", ex)));

            _subscriptions.Add(Observable
                .Interval(StatsFrequency, concurrencyService.Dispatcher)
                .Subscribe(_ => OnTimerTick()));
        }