Inheritance: ReactiveUI.ReactiveObject
Exemplo n.º 1
0
        public MainViewModel(RxSpySessionModel model)
        {
            Model = model;

            this.WhenAnyValue(x => x.Model.TrackedObservables)
                .ToProperty(this, x => x.TrackedObservables, out _trackedObservables);

            GridViewModel = new RxSpyObservablesGridViewModel(model.TrackedObservables);

            this.WhenAnyValue(x => x.GridViewModel.SelectedItem)
                .Select(x => x == null ? null : x.Model)
                .ToProperty(this, x => x.SelectedObservable, out _selectedObservable);

            this.WhenAnyValue(x => x.SelectedObservable)
                .Select(x => x == null ? null : new RxSpyObservableDetailsViewModel(x))
                .ToProperty(this, x => x.DetailsViewModel, out _detailViewModel);

            var throttledSignalCount = this.WhenAnyValue(x => x.Model.SignalCount)
                .Throttle(TimeSpan.FromSeconds(1), RxApp.MainThreadScheduler)
                .Publish()
                .RefCount();

            throttledSignalCount
                .Scan(Tuple.Create(0L, 0L), (acc, cur) => Tuple.Create(acc.Item2, cur))
                .Select(x => (double)(x.Item2 - x.Item1))
                .ToProperty(this, x => x.SignalsPerSecond, out _signalsPerSecond);

            throttledSignalCount.ToProperty(this, x => x.SignalCount, out _signalCount);

            this.WhenAnyValue(x => x.Model.ErrorCount)
                .Throttle(TimeSpan.FromSeconds(1), RxApp.MainThreadScheduler)
                .ToProperty(this, x => x.ErrorCount, out _errorCount);
        }
Exemplo n.º 2
0
        public static void Start()
        {
            var args = Environment.GetCommandLineArgs();

            var address = args.Length > 1
                ? new Uri(args[1])
                : new Uri("http://localhost:65073/rxspy/");

            var client = new RxSpyHttpClient();

            var session = new RxSpySessionModel();

            client.Connect(address, TimeSpan.FromSeconds(5))
                .Where(x => x != null)
                .ObserveOn(RxApp.MainThreadScheduler)
                .Subscribe(session.OnEvent, ex => { MessageBox.Show(App.Current.MainWindow, "Lost connection to host", "Host disconnected", MessageBoxButton.OK, MessageBoxImage.Error); });

            //session.OnEvent(new OperatorCreatedEvent
            //{
            //    EventType = EventType.OperatorCreated,
            //    Name = "Dummy1",
            //    Id = 0,
            //});

            //session.OnEvent(new OperatorCreatedEvent
            //{
            //    EventType = EventType.OperatorCreated,
            //    Name = "Dummy2",
            //    Id = 1,
            //});

            //session.OnEvent(new OperatorCreatedEvent
            //{
            //    EventType = EventType.OperatorCreated,
            //    Name = "Dummy3",
            //    Id = 2
            //});

            //session.OnEvent(new SubscribeEvent { EventType = EventType.Subscribe, ChildId = 2, ParentId = 1 });
            //session.OnEvent(new SubscribeEvent { EventType = EventType.Subscribe, ChildId = 1, ParentId = 0 });

            var mainViewModel = new MainViewModel(session);

            Locator.CurrentMutable.RegisterConstant(mainViewModel, typeof(MainViewModel));

            Locator.CurrentMutable.Register(() => new MainView(), typeof(IViewFor<MainViewModel>));
            Locator.CurrentMutable.Register(() => new TrackedObservablesGrid(), typeof(IViewFor<RxSpyObservablesGridViewModel>));
            Locator.CurrentMutable.Register(() => new ObservableDetails(), typeof(IViewFor<RxSpyObservableDetailsViewModel>));
        }