public bool TryAdd(TimerProcessorItem item) { if (item.Expiry == null) { return(false); } SortedList.Add(item.Expiry.Value, item); return(true); }
public void CancelAllAndClear() { for (int i = 0; i < SortedList.Count; ++i) { TimerProcessorItem item = SortedList.Values[i]; item.TryCancel(); } SortedList.Clear(); }
private TimerProcessorCallBackRequest(TimerProcessorRequest Request, TimerProcessorItem TimerProcessorItem, object TCS, ITaskCompletionSourceAccessor AccessorTCS) { this.Request = Request; this.TimerProcessorItem = TimerProcessorItem; this.TCS = TCS; this.AccessorTCS = AccessorTCS; }
public bool TryRemove(TimerProcessorItem item) { int i = SortedList.IndexOfValue(item); if (i == -1) { return(false); } SortedList.RemoveAt(i); return(true); }
public bool TryExpire(DateTime now) { for (int i = 0; i < SortedList.Count; ++i) { TimerProcessorItem item = SortedList.Values[i]; if (now < item.Expiry) { break; } Remove.Push(i); NullSafeSequencer.PointArg(SeqPointTypeUC.Match, OrderedExpiryItemsSequencer.TryExpireBegin, item); item.TryExpire(); NullSafeSequencer.PointArg(SeqPointTypeUC.Match, OrderedExpiryItemsSequencer.TryExpireEnd, item); } bool somethingExpired = Remove.Count > 0; while (Remove.Count > 0) { SortedList.RemoveAt(Remove.Pop()); } return(somethingExpired); }
public static TimerProcessorCallBackRequest Remove <TArg>(TaskCompletionSource <TArg> tcs) => new TimerProcessorCallBackRequest(TimerProcessorRequest.Remove, TimerProcessorItem.Remove(tcs), new TaskCompletionSource <TaskCompletionSource <TArg> >(TaskCreationOptions.RunContinuationsAsynchronously), TaskCompletionSourceAccessor <TaskCompletionSource <TArg> > .Default) ;
public static TimerProcessorCallBackRequest AddWithResult <TArg>(DateTime Now, TimeSpan Delay, TArg result) => new TimerProcessorCallBackRequest(TimerProcessorRequest.Add, TimerProcessorItem.AddWithResult(Now, Delay, result), new TaskCompletionSource <TaskCompletionSource <TArg> >(TaskCreationOptions.RunContinuationsAsynchronously), TaskCompletionSourceAccessor <TaskCompletionSource <TArg> > .Default) ;
public TimerProcessorCallBackRequest TrySetException(Exception e) { AccessorTCS.TrySetException(TCS, e); TimerProcessorItem.TrySetException(e); return(this); }
public TimerProcessorCallBackRequest TrySetDisposed() { AccessorTCS.TrySetException(TCS, TimerProcessor.DisposedException); TimerProcessorItem.TryDispose(); return(this); }
public TimerProcessorCallBackRequest TrySetCanceled() { AccessorTCS.TrySetCanceled(TCS); TimerProcessorItem.TryCancel(); return(this); }