|
|
@@ -12,15 +12,15 @@ namespace Discord.Net.Queue |
|
|
|
internal struct GatewayBucket |
|
|
|
{ |
|
|
|
private static readonly ImmutableDictionary<GatewayBucketType, GatewayBucket> DefsByType; |
|
|
|
private static readonly ImmutableDictionary<string, GatewayBucket> DefsById; |
|
|
|
private static readonly ImmutableDictionary<BucketId, GatewayBucket> DefsById; |
|
|
|
|
|
|
|
static GatewayBucket() |
|
|
|
{ |
|
|
|
var buckets = new[] |
|
|
|
{ |
|
|
|
new GatewayBucket(GatewayBucketType.Unbucketed, "<gateway-unbucketed>", 120, 60), |
|
|
|
new GatewayBucket(GatewayBucketType.Identify, "<gateway-identify>", 1, 5), |
|
|
|
new GatewayBucket(GatewayBucketType.PresenceUpdate, "<gateway-presenceupdate>", 5, 60), |
|
|
|
new GatewayBucket(GatewayBucketType.Unbucketed, BucketId.Create(null, "<gateway-unbucketed>", null), 120, 60), |
|
|
|
new GatewayBucket(GatewayBucketType.Identify, BucketId.Create(null, "<gateway-identify>", null), 1, 5), |
|
|
|
new GatewayBucket(GatewayBucketType.PresenceUpdate, BucketId.Create(null, "<gateway-presenceupdate>", null), 5, 60), |
|
|
|
}; |
|
|
|
|
|
|
|
var builder = ImmutableDictionary.CreateBuilder<GatewayBucketType, GatewayBucket>(); |
|
|
@@ -28,21 +28,21 @@ namespace Discord.Net.Queue |
|
|
|
builder.Add(bucket.Type, bucket); |
|
|
|
DefsByType = builder.ToImmutable(); |
|
|
|
|
|
|
|
var builder2 = ImmutableDictionary.CreateBuilder<string, GatewayBucket>(); |
|
|
|
var builder2 = ImmutableDictionary.CreateBuilder<BucketId, GatewayBucket>(); |
|
|
|
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; |
|
|
|