From e5c86e7c8f0848de5a631f06c60db2fb3a35d61e Mon Sep 17 00:00:00 2001 From: Paulo Date: Mon, 10 Aug 2020 10:35:51 -0300 Subject: [PATCH] Fix merge conflicts and update to new ratelimit --- src/Discord.Net.Rest/Net/Queue/GatewayBucket.cs | 16 ++++++++-------- src/Discord.Net.Rest/Net/Queue/RequestQueue.cs | 6 +++--- .../Net/Queue/RequestQueueBucket.cs | 4 ++-- .../DiscordSocketApiClient.cs | 2 +- 4 files changed, 14 insertions(+), 14 deletions(-) diff --git a/src/Discord.Net.Rest/Net/Queue/GatewayBucket.cs b/src/Discord.Net.Rest/Net/Queue/GatewayBucket.cs index 3de0aac27..e7d41474c 100644 --- a/src/Discord.Net.Rest/Net/Queue/GatewayBucket.cs +++ b/src/Discord.Net.Rest/Net/Queue/GatewayBucket.cs @@ -12,15 +12,15 @@ namespace Discord.Net.Queue internal struct GatewayBucket { private static readonly ImmutableDictionary DefsByType; - private static readonly ImmutableDictionary DefsById; + private static readonly ImmutableDictionary DefsById; static GatewayBucket() { var buckets = new[] { - new GatewayBucket(GatewayBucketType.Unbucketed, "", 120, 60), - new GatewayBucket(GatewayBucketType.Identify, "", 1, 5), - new GatewayBucket(GatewayBucketType.PresenceUpdate, "", 5, 60), + new GatewayBucket(GatewayBucketType.Unbucketed, BucketId.Create(null, "", null), 120, 60), + new GatewayBucket(GatewayBucketType.Identify, BucketId.Create(null, "", null), 1, 5), + new GatewayBucket(GatewayBucketType.PresenceUpdate, BucketId.Create(null, "", null), 5, 60), }; var builder = ImmutableDictionary.CreateBuilder(); @@ -28,21 +28,21 @@ namespace Discord.Net.Queue builder.Add(bucket.Type, bucket); DefsByType = builder.ToImmutable(); - var builder2 = ImmutableDictionary.CreateBuilder(); + var builder2 = ImmutableDictionary.CreateBuilder(); foreach (var bucket in buckets) builder2.Add(bucket.Id, bucket); DefsById = builder2.ToImmutable(); } public static GatewayBucket Get(GatewayBucketType type) => DefsByType[type]; - public static GatewayBucket Get(string id) => DefsById[id]; + public static GatewayBucket Get(BucketId id) => DefsById[id]; public GatewayBucketType Type { get; } - public string Id { get; } + public BucketId Id { get; } public int WindowCount { get; set; } public int WindowSeconds { get; set; } - public GatewayBucket(GatewayBucketType type, string id, int count, int seconds) + public GatewayBucket(GatewayBucketType type, BucketId id, int count, int seconds) { Type = type; Id = id; diff --git a/src/Discord.Net.Rest/Net/Queue/RequestQueue.cs b/src/Discord.Net.Rest/Net/Queue/RequestQueue.cs index 0d6b83cf0..e54c13da6 100644 --- a/src/Discord.Net.Rest/Net/Queue/RequestQueue.cs +++ b/src/Discord.Net.Rest/Net/Queue/RequestQueue.cs @@ -110,7 +110,7 @@ namespace Discord.Net.Queue else request.Options.CancelToken = _requestCancelToken; - var bucket = GetOrCreateBucket(request.Options.BucketId, request); + var bucket = GetOrCreateBucket(request.Options, request); await bucket.SendAsync(request).ConfigureAwait(false); createdTokenSource?.Dispose(); } @@ -163,7 +163,7 @@ namespace Discord.Net.Queue var options = RequestOptions.CreateOrClone(request.Options); options.BucketId = globalBucketType.Id; var globalRequest = new WebSocketRequest(null, null, false, options); - var globalBucket = GetOrCreateBucket(globalBucketType.Id, globalRequest); + var globalBucket = GetOrCreateBucket(options, globalRequest); await globalBucket.TriggerAsync(id, globalRequest); } internal void ReleaseIdentifySemaphore(int id) @@ -179,7 +179,7 @@ namespace Discord.Net.Queue #endif } - private RequestBucket GetOrCreateBucket(string id, IRequest request) + private RequestBucket GetOrCreateBucket(RequestOptions options, IRequest request) { var bucketId = options.BucketId; object obj = _buckets.GetOrAdd(bucketId, x => new RequestBucket(this, request, x)); diff --git a/src/Discord.Net.Rest/Net/Queue/RequestQueueBucket.cs b/src/Discord.Net.Rest/Net/Queue/RequestQueueBucket.cs index 45196578a..e06384c0c 100644 --- a/src/Discord.Net.Rest/Net/Queue/RequestQueueBucket.cs +++ b/src/Discord.Net.Rest/Net/Queue/RequestQueueBucket.cs @@ -25,7 +25,7 @@ namespace Discord.Net.Queue public int WindowCount { get; private set; } public DateTimeOffset LastAttemptAt { get; private set; } - public RequestBucket(RequestQueue queue, IRequest request, string id) + public RequestBucket(RequestQueue queue, IRequest request, BucketId id) { _queue = queue; Id = id; @@ -285,7 +285,7 @@ namespace Discord.Net.Queue } } - private void UpdateRateLimit(int id, IRequest request, RateLimitInfo info, bool is429) + private void UpdateRateLimit(int id, IRequest request, RateLimitInfo info, bool is429, bool redirected = false) { if (WindowCount == 0) return; diff --git a/src/Discord.Net.WebSocket/DiscordSocketApiClient.cs b/src/Discord.Net.WebSocket/DiscordSocketApiClient.cs index 1fe042811..4d191544b 100644 --- a/src/Discord.Net.WebSocket/DiscordSocketApiClient.cs +++ b/src/Discord.Net.WebSocket/DiscordSocketApiClient.cs @@ -208,7 +208,7 @@ namespace Discord.API bytes = Encoding.UTF8.GetBytes(SerializeJson(payload)); options.IsGatewayBucket = true; - if (string.IsNullOrEmpty(options.BucketId)) + if (options.BucketId == null) options.BucketId = GatewayBucket.Get(GatewayBucketType.Unbucketed).Id; await RequestQueue.SendAsync(new WebSocketRequest(WebSocketClient, bytes, true, options)).ConfigureAwait(false); await _sentGatewayMessageEvent.InvokeAsync(opCode).ConfigureAwait(false);