Ejemplo n.º 1
0
 private void before_each()
 {
     _bucketId    = new BucketId("bucket-id");
     _aggregate   = new FakeAggregate(Guid.NewGuid());
     _readStreams = new FakeIReadStreams();
     _target      = new UnitOfWork(_bucketId, _readStreams, null, null);
 }
Ejemplo n.º 2
0
 public GatewayBucket(GatewayBucketType type, BucketId id, int count, int seconds)
 {
     Type          = type;
     Id            = id;
     WindowCount   = count;
     WindowSeconds = seconds;
 }
Ejemplo n.º 3
0
 public ClientBucket(ClientBucketType type, BucketId id, int count, int seconds)
 {
     Type          = type;
     Id            = id;
     WindowCount   = count;
     WindowSeconds = seconds;
 }
Ejemplo n.º 4
0
        static GatewayBucket()
        {
            var buckets = new[]
            {
                // Limit is 120/60s, but 3 will be reserved for heartbeats (2 for possible heartbeats in the same timeframe and a possible failure)
                new GatewayBucket(GatewayBucketType.Unbucketed, BucketId.Create(null, "<gateway-unbucketed>", null), 117, 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>();

            foreach (var bucket in buckets)
            {
                builder.Add(bucket.Type, bucket);
            }
            DefsByType = builder.ToImmutable();

            var builder2 = ImmutableDictionary.CreateBuilder <BucketId, GatewayBucket>();

            foreach (var bucket in buckets)
            {
                builder2.Add(bucket.Id, bucket);
            }
            DefsById = builder2.ToImmutable();
        }
Ejemplo n.º 5
0
 public override int GetHashCode()
 {
     unchecked
     {
         return((BucketId.GetHashCode() * 397) ^ StreamId.GetHashCode());
     }
 }
 private void before_each()
 {
     _id             = Guid.Parse("bcb724f5-562f-4706-b470-570fa7174ec0");
     _bucketId       = new BucketId("bucket-id");
     _createSessions = new FakeICreateSessions();
     _streams        = new FakeIWriteStreams();
     _target         = new UnitOfWork(_bucketId, null, _createSessions, _streams);
 }
Ejemplo n.º 7
0
 private void before_each()
 {
     _id                  = Guid.Parse("bcb724f5-562f-4706-b470-570fa7174ec0");
     _bucketId            = new BucketId("bucket-id");
     _aggregate           = new FakeAggregate(_id);
     _createSessions      = new FakeICreateSessions();
     _writeSessionStreams = new FakeIWriteStreams();
     _readStreams         = new FakeIReadStreams();
     _target              = new UnitOfWork(_bucketId, _readStreams, _createSessions, _writeSessionStreams);
 }
Ejemplo n.º 8
0
 internal (RequestBucket, BucketId) UpdateBucketHash(BucketId id, string discordHash)
 {
     if (!id.IsHashBucket)
     {
         var bucket       = BucketId.Create(discordHash, id);
         var hashReqQueue = (RequestBucket)_buckets.GetOrAdd(bucket, _buckets[id]);
         _buckets.AddOrUpdate(id, bucket, (oldBucket, oldObj) => bucket);
         return(hashReqQueue, bucket);
     }
     return(null, null);
 }
Ejemplo n.º 9
0
        private RequestBucket GetOrCreateBucket(RequestOptions options, IRequest request)
        {
            BucketId bucketId = options.BucketId;
            object   obj      = _buckets.GetOrAdd(bucketId, x => new RequestBucket(this, request, x));

            if (obj is BucketId hashBucket)
            {
                options.BucketId = hashBucket;
                return((RequestBucket)_buckets.GetOrAdd(hashBucket, x => new RequestBucket(this, request, x)));
            }
            return((RequestBucket)obj);
        }
Ejemplo n.º 10
0
 private void when_create()
 {
     act             = () => _bucketId = new BucketId(_value);
     it["has value"] = () => _bucketId.Value.ShouldBe(_value);
     context["and value is null"] = () =>
     {
         before = () => _value = null;
         it["throws exception"] = expect <ArgumentOutOfRangeException>(
             "Specified argument was out of the range of valid values.\r\nParameter name: value"
             );
     };
     context["and value is empty string"] = () =>
     {
         before = () => _value = string.Empty;
         it["throws exception"] = expect <ArgumentOutOfRangeException>(
             "Specified argument was out of the range of valid values.\r\nParameter name: value"
             );
     };
 }
Ejemplo n.º 11
0
        public RequestBucket(RequestQueue queue, RestRequest request, BucketId id)
        {
            _queue = queue;
            Id     = id;

            _lock = new object();

            if (request.Options.IsClientBucket)
            {
                WindowCount = ClientBucket.Get(Id).WindowCount;
            }
            else
            {
                WindowCount = 1; //Only allow one request until we get a header back
            }
            _semaphore    = WindowCount;
            _resetTick    = null;
            LastAttemptAt = DateTimeOffset.UtcNow;
        }
Ejemplo n.º 12
0
        static ClientBucket()
        {
            ClientBucket[] buckets = new[]
            {
                new ClientBucket(ClientBucketType.Unbucketed, BucketId.Create(null, "<unbucketed>", null), 10, 10),
                new ClientBucket(ClientBucketType.SendEdit, BucketId.Create(null, "<send_edit>", null), 10, 10)
            };

            ImmutableDictionary <ClientBucketType, ClientBucket> .Builder builder = ImmutableDictionary.CreateBuilder <ClientBucketType, ClientBucket>();
            foreach (ClientBucket bucket in buckets)
            {
                builder.Add(bucket.Type, bucket);
            }
            DefsByType = builder.ToImmutable();

            ImmutableDictionary <BucketId, ClientBucket> .Builder builder2 = ImmutableDictionary.CreateBuilder <BucketId, ClientBucket>();
            foreach (ClientBucket bucket in buckets)
            {
                builder2.Add(bucket.Id, bucket);
            }
            DefsById = builder2.ToImmutable();
        }
Ejemplo n.º 13
0
        static GatewayBucket()
        {
            GatewayBucket[] buckets = new[]
            {
                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),
            };

            ImmutableDictionary <GatewayBucketType, GatewayBucket> .Builder builder = ImmutableDictionary.CreateBuilder <GatewayBucketType, GatewayBucket>();
            foreach (GatewayBucket bucket in buckets)
            {
                builder.Add(bucket.Type, bucket);
            }
            DefsByType = builder.ToImmutable();

            ImmutableDictionary <BucketId, GatewayBucket> .Builder builder2 = ImmutableDictionary.CreateBuilder <BucketId, GatewayBucket>();
            foreach (GatewayBucket bucket in buckets)
            {
                builder2.Add(bucket.Id, bucket);
            }
            DefsById = builder2.ToImmutable();
        }
Ejemplo n.º 14
0
 private void before_each()
 {
     _bucketId = new BucketId("bucket-id");
 }
Ejemplo n.º 15
0
 public static GatewayBucket Get(BucketId id) => DefsById[id];
 private void before_each()
 {
     _target   = new DefaultStreamIdentityFactory();
     _bucketId = new BucketId("bucket-id");
     _id       = "aggregate-id";
 }
Ejemplo n.º 17
0
 public session_collision(BucketId bucketId, ICreateSessions sessions, IWriteStreams streams)
 {
     _bucketId = bucketId;
     _sessions = sessions;
     _streams  = streams;
 }
Ejemplo n.º 18
0
 internal async Task RaiseRateLimitTriggered(BucketId bucketId, RateLimitInfo?info, string endpoint)
 {
     await RateLimitTriggered(bucketId, info, endpoint).ConfigureAwait(false);
 }
Ejemplo n.º 19
0
 private void before_each()
 {
     _bucketId      = new BucketId("bucket-id");
     _aggregateType = new AggregateType("aggregate-type");
     _aggregateId   = new AggregateId("aggregate-id");
 }
Ejemplo n.º 20
0
 /// <summary>
 /// Gets the hash code for this <see cref="RateLimitBucket"/>.
 /// </summary>
 /// <returns>The hash code for this <see cref="RateLimitBucket"/>.</returns>
 public override int GetHashCode()
 {
     return(BucketId.GetHashCode());
 }
Ejemplo n.º 21
0
 /// <summary>
 /// Gets the hash code for this <see cref="RateLimitBucket"/>.
 /// </summary>
 /// <returns>The hash code for this <see cref="RateLimitBucket"/>.</returns>
 public override int GetHashCode() => BucketId.GetHashCode();
Ejemplo n.º 22
0
 public static ClientBucket Get(BucketId id) => DefsById[id];
 private void before_each()
 {
     _bucketId  = new BucketId("bucket-id");
     _aggregate = new FakeICanBeRegistered();
     _target    = new UnitOfWork(_bucketId, null, null, null);
 }