PsQueueItemExt.cs 1.4 KB

123456789101112131415161718192021222324252627282930313233343536
  1. namespace qdr.fnd.core.pqueue.Extensions
  2. {
  3. /// <summary>
  4. /// <see cref="IPsQueueItem"/> extension methods."/>
  5. /// </summary>
  6. public static class PsQueueItemExt
  7. {
  8. /// <summary>
  9. /// Check if <see cref="IPsQueueItem"/> is expired by <see cref="IPsQueueItemDescriptor.ValidTo"/> interval.
  10. /// Ignored <see cref="IPsQueueItem.AttemptsLeft"/> and <see cref="IPsQueueItem.Status"/>.
  11. /// </summary>
  12. /// <param name="item">Current item.</param>
  13. /// <returns>If true, item is expired by time span validity.</returns>
  14. public static bool IsValiditySpanExpired(this IPsQueueItem item)
  15. {
  16. if (item.ValidTo == null)
  17. return false;
  18. return item.ValidTo < DateTime.Now;
  19. }
  20. /// <summary>
  21. /// Check if <see cref="IPsQueueItem"/> is ready to be processed by <see cref="IPsQueueItemDescriptor.ValidFrom"/> and <see cref="IPsQueueItemDescriptor.ValidTo"/> interval.
  22. /// Ignores AttemptsLeft and Status.
  23. /// </summary>
  24. /// <param name="item">Current item.</param>
  25. /// <returns>If true, item can be processed by time span validity.</returns>
  26. public static bool IsValiditySpanReady(this IPsQueueItem item)
  27. {
  28. if (item.ValidFrom <= DateTime.Now && !item.IsValiditySpanExpired())
  29. return true;
  30. return false;
  31. }
  32. }
  33. }