From 4e3f7260731a849211ed42bdf10ef65cdd69877e Mon Sep 17 00:00:00 2001 From: RogueException Date: Thu, 24 Mar 2016 20:48:35 -0300 Subject: [PATCH] Added member request batching --- src/Discord.Net/DiscordClient.cs | 8 ++++++-- src/Discord.Net/DiscordConfig.cs | 2 +- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/Discord.Net/DiscordClient.cs b/src/Discord.Net/DiscordClient.cs index 5d79e2483..1a7aaa1a2 100644 --- a/src/Discord.Net/DiscordClient.cs +++ b/src/Discord.Net/DiscordClient.cs @@ -276,7 +276,7 @@ namespace Discord /// Disconnects from the Discord server, canceling any pending requests. public Task Disconnect() => _taskManager.Stop(true); - private async Task Cleanup() + private async Task Cleanup() { var oldState = State; State = ConnectionState.Disconnecting; @@ -525,7 +525,11 @@ namespace Discord channel.Update(model); } if (largeServers.Count > 0) - GatewaySocket.SendRequestMembers(largeServers, "", 0); + { + int batches = (largeServers.Count + (DiscordConfig.ServerBatchCount - 1)) / DiscordConfig.ServerBatchCount; + for (int i = 0; i < batches; i++) + GatewaySocket.SendRequestMembers(largeServers.Skip(i * DiscordConfig.ServerBatchCount), "", 0); + } else EndConnect(); } diff --git a/src/Discord.Net/DiscordConfig.cs b/src/Discord.Net/DiscordConfig.cs index ab6f92eba..c7a754812 100644 --- a/src/Discord.Net/DiscordConfig.cs +++ b/src/Discord.Net/DiscordConfig.cs @@ -61,6 +61,7 @@ namespace Discord internal const int RestTimeout = 10000; internal const int MessageQueueInterval = 100; internal const int WebSocketQueueInterval = 100; + internal const int ServerBatchCount = 50; public const string LibName = "Discord.Net"; public static string LibVersion => typeof(DiscordConfigBuilder).GetTypeInfo().Assembly.GetName().Version.ToString(3); @@ -88,7 +89,6 @@ namespace Discord public bool UsePermissionsCache { get; } public bool EnablePreUpdateEvents { get; } - internal DiscordConfig(DiscordConfigBuilder builder) { LogLevel = builder.LogLevel;