Exemple #1
0
        public FlightDataService(
            TimeSpan pollInterval,
            IFlightDataProvider flightDataProvider)
        {
            _rawFlightData = Observable.Interval(pollInterval)
                .Select(_ => flightDataProvider.GetCurrentFlightData())
                .Publish();

            FlightArmed = _rawFlightData
                .DistinctUntilChanged(i => i.Armed)
                .Where(i => i.Armed)
                .Select(flightData => new Models.FlightData(flightData) {HomePosition = flightData.CurrentPosition});

            FlightDisarmed = _rawFlightData
                .DistinctUntilChanged(i => i.Armed)
                .Where(i => !i.Armed);

            ArmedFlightData = _rawFlightData
                .Where(i => i.Armed)
                .Select(flightData => new Models.FlightData(flightData) {HomePosition = _homePosition});

            FlightArmed
                .Subscribe(i => _homePosition = i.CurrentPosition);

            FlightDisarmed
                .Subscribe(i => _homePosition = null, () => _homePosition = null);

            _rawFlightDataSubscription = _rawFlightData.Connect();
        }
        public void Initialize()
        {
            FlightArmed
            .Subscribe(i => _homePosition = i.CurrentPosition);

            FlightDisarmed
            .Subscribe(i => _homePosition = null, () => _homePosition = null);

            _rawFlightDataSubscription = _rawFlightData.Connect();
        }