@@ -12,15 +12,15 @@ namespace Discord.Net.Queue
internal struct GatewayBucket
internal struct GatewayBucket
{
{
private static readonly ImmutableDictionary<GatewayBucketType, GatewayBucket> DefsByType;
private static readonly ImmutableDictionary<GatewayBucketType, GatewayBucket> DefsByType;
private static readonly ImmutableDictionary<string , GatewayBucket> DefsById;
private static readonly ImmutableDictionary<BucketId , GatewayBucket> DefsById;
static GatewayBucket()
static GatewayBucket()
{
{
var buckets = new[]
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>();
var builder = ImmutableDictionary.CreateBuilder<GatewayBucketType, GatewayBucket>();
@@ -28,21 +28,21 @@ namespace Discord.Net.Queue
builder.Add(bucket.Type, bucket);
builder.Add(bucket.Type, bucket);
DefsByType = builder.ToImmutable();
DefsByType = builder.ToImmutable();
var builder2 = ImmutableDictionary.CreateBuilder<string , GatewayBucket>();
var builder2 = ImmutableDictionary.CreateBuilder<BucketId , GatewayBucket>();
foreach (var bucket in buckets)
foreach (var bucket in buckets)
builder2.Add(bucket.Id, bucket);
builder2.Add(bucket.Id, bucket);
DefsById = builder2.ToImmutable();
DefsById = builder2.ToImmutable();
}
}
public static GatewayBucket Get(GatewayBucketType type) => DefsByType[type];
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 GatewayBucketType Type { get; }
public string Id { get; }
public BucketId Id { get; }
public int WindowCount { get; set; }
public int WindowCount { get; set; }
public int WindowSeconds { 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;
Type = type;
Id = id;
Id = id;