Exemplo n.º 1
0
        /// <inheritdoc />
        public void ScheduleNext()
        {
            lock (LockObj)
            {
                var currentDateTime = _dateService.Now();

                //need to know in which OvernightMarginJobType we are now and the moment of next change
                var marketsSchedule = _scheduleSettingsCache.GetMarketsTradingSchedule();

                var nextStart = TryGetClosestPoint(marketsSchedule, currentDateTime);

                _log.WriteInfo(nameof(ScheduleControlService), nameof(ScheduleNext),
                               $"Planning next check to [{nextStart:s}]."
                               + $" Check time: [{currentDateTime:s}].");

                _scheduleSettingsCache.HandleMarketStateChanges(currentDateTime);

                JobManager.RemoveJob(nameof(ScheduleControlService));
                JobManager.AddJob(ScheduleNext, s => s
                                  .WithName(nameof(ScheduleControlService)).NonReentrant().ToRunOnceAt(nextStart));
            }
        }
Exemplo n.º 2
0
 public Task <Dictionary <string, List <CompiledScheduleTimeIntervalContract> > > CompiledMarketTradingSchedule()
 {
     return(Task.FromResult(_scheduleSettingsCacheService.GetMarketsTradingSchedule()
                            .ToDictionary(x => x.Key, x => x.Value.Select(m => m.ToRabbitMqContract()).ToList())));
 }