コード例 #1
0
        public void RecordCheckpoint(Checkpoint checkpoint)
        {
            using var s = sync.UseOnce();
            var checkpointDto = autoMapperProvider.Map <CheckpointDto>(checkpoint);

            checkpointDto.RecordingSessionId = ActiveRecordingSession.Id;
            eventRepository.Save(checkpointDto);
            ActiveTimingSession.AppendCheckpoint(checkpoint);
        }
コード例 #2
0
ファイル: TimingSession.cs プロジェクト: maxbl4/RaceLogic
        private void Reload(bool force, StorageUpdated msg = null)
        {
            logger.Information("Initialize {EntityType}", msg?.Entity?.GetType()?.Name);
            if (msg != null)
            {
                switch (msg.Entity)
                {
                //case RecordingSessionDto:
                case CheckpointDto:
                    //case TimingSessionDto:
                    return;
                }
            }
            var timingSession = eventRepository.StorageService.Get(Id);

            if (!timingSession.IsRunning && !force)
            {
                return;
            }
            logger.Information("Initialize updating subscription");
            disposable?.DisposeSafe();
            disposable = new CompositeDisposable();
            var session = eventRepository.GetWithUpstream(timingSession.SessionId);

            GateId            = eventRepository.GetGateId(timingSession.SessionId);
            checkpointHandler = new TimingCheckpointHandler(timingSession.StartTime, Id, session,
                                                            eventRepository.GetRiderIdentifiers(timingSession.SessionId), messageHub);
            disposable.Add(checkpointHandler);
            var cps = recordingServiceRepository
                      .GetCheckpoints(timingSession.GateId, timingSession.StartTime, timingSession.StopTime);

            foreach (var cp in cps)
            {
                recordingService.AppendCheckpoint(GateId, autoMapper.Map <Checkpoint>(cp));
            }
        }