From 0ec7218ad010c843ccf8e366ab4fb9236b1bffc1 Mon Sep 17 00:00:00 2001 From: RogueException Date: Sun, 21 Feb 2016 23:09:52 -0400 Subject: [PATCH] Provide more information during MessageQueue warnings --- src/Discord.Net/MessageQueue.cs | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/src/Discord.Net/MessageQueue.cs b/src/Discord.Net/MessageQueue.cs index bc659e4d6..eaad53bd3 100644 --- a/src/Discord.Net/MessageQueue.cs +++ b/src/Discord.Net/MessageQueue.cs @@ -33,11 +33,16 @@ namespace Discord.Net private readonly ConcurrentQueue _pendingEdits; private readonly ConcurrentQueue _pendingDeletes; private readonly ConcurrentDictionary _pendingSendsByNonce; - private int _nextWarning; - private int _count; + private int _count, _nextWarning; /// Gets the current number of queued actions. public int Count => _count; + /// Gets the current number of queued sends. + public int SendCount => _pendingSends.Count; + /// Gets the current number of queued edits. + public int EditCount => _pendingEdits.Count; + /// Gets the current number of queued deletes. + public int DeleteCount => _pendingDeletes.Count; internal MessageQueue(RestClient rest, Logger logger) { @@ -218,8 +223,12 @@ namespace Discord.Net int count = Interlocked.Increment(ref _count); if (count >= _nextWarning) { - _nextWarning *= 2; - _logger.Warning($"Queue is backed up, currently at {count} actions."); + _nextWarning <<= 1; + int sendCount = _pendingSends.Count; + int editCount = _pendingEdits.Count; + int deleteCount = _pendingDeletes.Count; + count = sendCount + editCount + deleteCount; //May not add up due to async + _logger.Warning($"Queue is backed up, currently at {count} actions ({sendCount} sends, {editCount} edits, {deleteCount} deletes)."); } else if (count < WarningStart) //Reset once the problem is solved _nextWarning = WarningStart;