tryAcquire method

Object? tryAcquire({
  1. required bool backupRunning,
  2. required bool syncRunning,
  3. required bool analyzing,
  4. DateTime? now,
})

Implementation

Object? tryAcquire({
  required bool backupRunning,
  required bool syncRunning,
  required bool analyzing,
  DateTime? now,
}) {
  final currentTime = now ?? DateTime.now();
  final activeToken = _activeToken;
  if (activeToken != null) {
    final startedAt = _startedAt;
    final withinStartupGrace =
        startedAt != null && currentTime.difference(startedAt) < startupGrace;
    if (backupRunning || syncRunning || analyzing || withinStartupGrace) {
      return null;
    }
    _activeToken = null;
    _startedAt = null;
  } else if (backupRunning || analyzing) {
    return null;
  }

  final token = Object();
  _activeToken = token;
  _startedAt = currentTime;
  return token;
}