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();
 }
Esempio n. 3
0
 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);
        }
Esempio n. 6
0
 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)
 ;
Esempio n. 7
0
 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)
 ;
Esempio n. 8
0
 public TimerProcessorCallBackRequest TrySetException(Exception e)
 {
     AccessorTCS.TrySetException(TCS, e);
     TimerProcessorItem.TrySetException(e);
     return(this);
 }
Esempio n. 9
0
 public TimerProcessorCallBackRequest TrySetDisposed()
 {
     AccessorTCS.TrySetException(TCS, TimerProcessor.DisposedException);
     TimerProcessorItem.TryDispose();
     return(this);
 }
Esempio n. 10
0
 public TimerProcessorCallBackRequest TrySetCanceled()
 {
     AccessorTCS.TrySetCanceled(TCS);
     TimerProcessorItem.TryCancel();
     return(this);
 }