Beispiel #1
0
        private async Task EnableRfid(RfidOptions options)
        {
            logger.Information("Starting RFID");

            stream     = factory.CreateStream(options.GetConnectionString());
            disposable = new CompositeDisposable(stream,
                                                 stream.Tags.Subscribe(x =>
            {
                if (options.PersistTags)
                {
                    logger.Swallow(() => storageService.AppendTag(mapper.Map <Tag>(x)));
                }
                AppendRiderId(x.TagId);
            }));
            aggregator =
                TimestampAggregatorConfigurations.ForCheckpoint(TimeSpan.FromMilliseconds(options.CheckpointAggregationWindowMs));
            disposable.Add(stream.Connected.CombineLatest(stream.Heartbeat,
                                                          (con, hb) => new ReaderStatus {
                IsConnected = con, Heartbeat = hb
            })
                           .Subscribe(OnReaderStatus)
                           );
            disposable.Add(checkpoints.Subscribe(aggregator));
            disposable.Add(aggregator.Subscribe(OnCheckpoint));
            disposable.Add(aggregator.AggregatedCheckpoints.Subscribe(OnCheckpoint));
            await stream.Start();
        }
Beispiel #2
0
 public void Initialize(IEnumerable <Checkpoint> initialCheckpoints = null)
 {
     Track = new TrackOfCheckpoints(StartTime, FinishCriteria);
     RawCheckpoints.Clear();
     AggCheckpoints.Clear();
     checkpointAggregator = TimestampAggregatorConfigurations.ForCheckpoint(MinLap);
     checkpointAggregator.Subscribe(Track.Append);
     checkpointAggregator.AggregatedCheckpoints.Subscribe(AggCheckpoints.Add);
     foreach (var checkpoint in initialCheckpoints)
     {
         checkpointAggregator.OnNext(ResolveRiderId(checkpoint));
     }
 }