schedulePeriodic method

void schedulePeriodic(
  1. Duration frequency, {
  2. Duration? minInterval,
})

Schedules eviction to run periodically.

The frequency parameter determines how often eviction should run. The minInterval parameter sets a minimum time between evictions to prevent excessive cleanup operations.

Implementation

void schedulePeriodic(Duration frequency, {Duration? minInterval}) {
  if (_isRunning) {
    _log.warning('Scheduler is already running. Stop it first.');
    return;
  }

  if (frequency < Duration(minutes: 1)) {
    _log.warning('Frequency is too short. Setting to 1 minute.');
    frequency = Duration(minutes: 1);
  }

  if (minInterval != null) {
    _minInterval = minInterval;
  }

  _conditions.add(EvictionTiming.periodic);
  _periodicTimer = Timer.periodic(frequency, (_) => _checkAndEvict());
  _isRunning = true;
  _log.info(
      'Scheduled periodic eviction every ${frequency.inMinutes} minutes');
}