From 765e986018ad6536b016fa080fff2ed150162b73 Mon Sep 17 00:00:00 2001 From: Master Kwoth Date: Fri, 8 Apr 2016 15:49:24 +0200 Subject: [PATCH] Now getting all of the large server data properly --- src/Discord.Net/DiscordClient.cs | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/Discord.Net/DiscordClient.cs b/src/Discord.Net/DiscordClient.cs index aa3d402c8..21b41c1fc 100644 --- a/src/Discord.Net/DiscordClient.cs +++ b/src/Discord.Net/DiscordClient.cs @@ -529,23 +529,23 @@ namespace Discord try { ulong serverId; - ulong[] serverIds = new ulong[50]; - int i = 0; + const short batchSize = 50; + int largeServersCount = 0; await Task.Delay(2500, cancelToken); - while (true) + do { - while (_largeServers.TryDequeue(out serverId) && i < 50) - serverIds[i++] = serverId; - if (i > 0) + largeServersCount = 0; + ulong[] serverIds = new ulong[batchSize]; + while (largeServersCount < batchSize && _largeServers.TryDequeue(out serverIds[largeServersCount++])) { } + if (largeServersCount > 0) { + Logger.Warning($"Downloading data for {largeServersCount} large servers."); cancelToken.ThrowIfCancellationRequested(); GatewaySocket.SendRequestMembers(serverIds, "", 0); await Task.Delay(1500, cancelToken); } - if (i < 50) - break; - } + } while (largeServersCount == batchSize); await Task.Delay(2500, cancelToken); EndConnect(); }