dionjansen commented on a change in pull request #67: URL: https://github.com/apache/pulsar-dotpulsar/pull/67#discussion_r552565957
########## File path: src/DotPulsar/Internal/UnackedMessageTracker.cs ########## @@ -0,0 +1,101 @@ +namespace DotPulsar.Internal +{ + using Abstractions; + using DotPulsar.Abstractions; + using System; + using System.Collections.Concurrent; + using System.Diagnostics; + using System.Linq; + using System.Collections.Generic; + using System.Threading; + using System.Threading.Tasks; + + public readonly struct AwaitingAck + { + public MessageId MessageId { get; } + public long Timestamp { get; } + + public AwaitingAck(MessageId messageId) + { + MessageId = messageId; + Timestamp = Stopwatch.GetTimestamp(); + } + + public TimeSpan Elapsed => TimeSpan.FromTicks( + (long) ((Stopwatch.GetTimestamp() - Timestamp) / (double)Stopwatch.Frequency * TimeSpan.TicksPerSecond)); + } + + public sealed class UnackedMessageTracker : IUnackedMessageTracker + { + private readonly TimeSpan _ackTimeout; + private readonly TimeSpan _pollingTimeout; + private readonly ConcurrentQueue<AwaitingAck> _awaitingAcks; + private readonly List<MessageId> _acked; + private readonly CancellationTokenSource _cancellationTokenSource; + Review comment: Done b78ac54 ---------------------------------------------------------------- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: us...@infra.apache.org