in src/NMS.AMQP/Util/PriorityMessageQueue.cs [141:167]
public InboundMessageDispatch Dequeue(int timeout)
{
using(syncRoot.Lock())
{
while (timeout != 0 && IsEmpty && !disposed)
{
if (timeout == -1)
{
syncRoot.Wait();
}
else
{
long start = DateTime.UtcNow.Ticks / 10_000L;
syncRoot.Wait(timeout);
timeout = Math.Max(timeout + (int) (start - DateTime.UtcNow.Ticks / 10_000L), 0);
}
}
if (IsEmpty || disposed)
{
return null;
}
return RemoveFirst();
}
}