public virtual void TryProcessNext() { long currentTime = SystemUtil.GetRelativeTimeMillis(); if (currentTime - lastProcessedTime.Get() > waitTime.GetTime()) { lastProcessedTime.Set(SystemUtil.GetRelativeTimeMillis()); V data; lock (cache) { data = cache.RetrieveNext(); } if (data != null) { bool successful; lock (processLock) { successful = TryProcess(data); } if (successful) { OnSuccess(data); } else { lock (cache) { cache.Put(data); } OnFailure(data); } } } }
public virtual void IncreaseWaitTime() { WaitTime local = waitTime; waitTime = new WaitTime(local.GetInitial(), local.GetMaximum(), Math.Min(local.GetTime() * 2, local.GetMaximum ())); }