예제 #1
0
 public long GetBucketSize(int capabilityId)
 {
     if (CapabilityBucketSizeDictionary.TryGetValue(capabilityId, out var value))
     {
         return(value.Size);
     }
     // else
     throw new Exception("No bucket size Found!");
 }
예제 #2
0
 public void DecreaseBucketSize(int capabilityId, long duration)
 {
     if (CapabilityBucketSizeDictionary.TryGetValue(capabilityId, out var value)) // update
     {
         value.Duration -= duration;
         if (value.Duration < 0)
         {
             throw new Exception("Capability capacity for " + value.Capability.Id + " negativ");
         }
         CalculateBucketSize();
     }
 }
예제 #3
0
        public void AddOrUpdateBucketSize(M_ResourceCapability capability, long duration)
        {
            if (CapabilityBucketSizeDictionary.TryGetValue(capability.Id, out var value)) // update
            {
                value.Duration += duration;
                CalculateBucketSize();
                return;
            }
            // Create
            var bucketSize = new BucketSize {
                Duration = duration, Size = duration, Capability = capability
            };

            CapabilityBucketSizeDictionary.Add(capability.Id, bucketSize);
            CalculateBucketSize();
        }