|
@@ -33,11 +33,16 @@ namespace Discord.Net |
|
|
private readonly ConcurrentQueue<MessageEdit> _pendingEdits; |
|
|
private readonly ConcurrentQueue<MessageEdit> _pendingEdits; |
|
|
private readonly ConcurrentQueue<Message> _pendingDeletes; |
|
|
private readonly ConcurrentQueue<Message> _pendingDeletes; |
|
|
private readonly ConcurrentDictionary<int, string> _pendingSendsByNonce; |
|
|
private readonly ConcurrentDictionary<int, string> _pendingSendsByNonce; |
|
|
private int _nextWarning; |
|
|
|
|
|
private int _count; |
|
|
|
|
|
|
|
|
private int _count, _nextWarning; |
|
|
|
|
|
|
|
|
/// <summary> Gets the current number of queued actions. </summary> |
|
|
/// <summary> Gets the current number of queued actions. </summary> |
|
|
public int Count => _count; |
|
|
public int Count => _count; |
|
|
|
|
|
/// <summary> Gets the current number of queued sends. </summary> |
|
|
|
|
|
public int SendCount => _pendingSends.Count; |
|
|
|
|
|
/// <summary> Gets the current number of queued edits. </summary> |
|
|
|
|
|
public int EditCount => _pendingEdits.Count; |
|
|
|
|
|
/// <summary> Gets the current number of queued deletes. </summary> |
|
|
|
|
|
public int DeleteCount => _pendingDeletes.Count; |
|
|
|
|
|
|
|
|
internal MessageQueue(RestClient rest, Logger logger) |
|
|
internal MessageQueue(RestClient rest, Logger logger) |
|
|
{ |
|
|
{ |
|
@@ -218,8 +223,12 @@ namespace Discord.Net |
|
|
int count = Interlocked.Increment(ref _count); |
|
|
int count = Interlocked.Increment(ref _count); |
|
|
if (count >= _nextWarning) |
|
|
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 |
|
|
else if (count < WarningStart) //Reset once the problem is solved |
|
|
_nextWarning = WarningStart; |
|
|
_nextWarning = WarningStart; |
|
|