TimingEventHelper.cs 1.1 KB

1234567891011121314151617181920212223242526272829303132333435
  1. using System.Collections.Concurrent;
  2. using Best.HTTP.Shared;
  3. using Best.HTTP.Shared.Extensions;
  4. namespace Best.HTTP.Request.Timings
  5. {
  6. public static class TimingEventHelper
  7. {
  8. private static ConcurrentQueue<TimingEventInfo> eventQueue = new ConcurrentQueue<TimingEventInfo>();
  9. public static void Enqueue(TimingEventInfo timingEvent)
  10. {
  11. if (HTTPManager.Logger.IsDiagnostic)
  12. HTTPManager.Logger.Information(nameof(TimingEventHelper), $"{nameof(Enqueue)} {timingEvent}", timingEvent.SourceRequest.Context);
  13. /*if (HTTPUpdateDelegator.Instance.IsMainThread())
  14. timingEvent.SourceRequest.Timing.AddEvent(timingEvent);
  15. else*/
  16. eventQueue.Enqueue(timingEvent);
  17. }
  18. internal static void Clear()
  19. {
  20. eventQueue.Clear();
  21. }
  22. internal static void ProcessQueue()
  23. {
  24. TimingEventInfo timingEvent;
  25. while (eventQueue.TryDequeue(out timingEvent))
  26. timingEvent.SourceRequest.Timing.AddEvent(timingEvent);
  27. }
  28. }
  29. }