public void AddTask(RevaleeTask task) { if (task == null) { throw new ArgumentNullException("task"); } lock (_SyncRoot) { _PersistenceProvider.AddTask(task); } _AwaitingTaskCollection.AddOrReplace(task.CallbackId, task, task.CallbackTime); Supervisor.Telemetry.IncrementAwaitingTasksValue(); ResetTaskAlarm(); }
public static TimeSpan OnRetryableFailure(Uri callbackUrl) { if (callbackUrl == null) { throw new ArgumentNullException("callbackUrl"); } _FailedCallbackLog.RemoveAllOverdue(); int retryIndex = _FailedCallbackLog.AddOrReplace(callbackUrl.Authority, () => 0, (oldValue, oldDue) => oldValue + 1, (newValue, oldDue) => DateTime.UtcNow.Add(_FailureTimeWindow)); return(AssignDelayInterval(retryIndex)); }