Пример #1
0
        public override void Update(TimerInfo item)
        {
            base.Update(item);

            Timer timer;

            if (_timers.TryGetValue(item.Id, out timer))
            {
                var timespan = RecordingHelper.GetStartTime(item) - DateTime.UtcNow;
                timer.Change(timespan, TimeSpan.Zero);
            }
            else
            {
                AddTimer(item);
            }
        }
Пример #2
0
        private void AddTimer(TimerInfo item)
        {
            var startDate = RecordingHelper.GetStartTime(item);
            var now       = DateTime.UtcNow;

            if (startDate < now)
            {
                EventHelper.FireEventIfNotNull(TimerFired, this, new GenericEventArgs <TimerInfo> {
                    Argument = item
                }, Logger);
                return;
            }

            var timerLength = startDate - now;

            StartTimer(item, timerLength);
        }
Пример #3
0
        private void ScheduleWake(TimerInfo info)
        {
            var startDate = RecordingHelper.GetStartTime(info).AddMinutes(-5);

            try
            {
                _powerManagement.ScheduleWake(startDate);
                _logger.Info("Scheduled system wake timer at {0} (UTC)", startDate);
            }
            catch (NotImplementedException)
            {
            }
            catch (Exception ex)
            {
                _logger.ErrorException("Error scheduling wake timer", ex);
            }
        }
Пример #4
0
        private void AddOrUpdateSystemTimer(TimerInfo item)
        {
            StopTimer(item);

            if (!ShouldStartTimer(item))
            {
                return;
            }

            var startDate = RecordingHelper.GetStartTime(item);
            var now       = DateTime.UtcNow;

            if (startDate < now)
            {
                EventHelper.FireEventIfNotNull(TimerFired, this, new GenericEventArgs <TimerInfo> {
                    Argument = item
                }, Logger);
                return;
            }

            var dueTime = startDate - now;

            StartTimer(item, dueTime);
        }