/// <summary> /// Initializes a new instance of the <see cref="HystrixRollingNumber"/> class. /// </summary> /// <param name="time">The <see cref="ITime"/> instance to measure time.</param> /// <param name="timeInMilliseconds">The total time window to track.</param> /// <param name="numberOfBuckets">The number of parts to break the time window.</param> private HystrixRollingNumber(ITime time, IHystrixProperty <int> timeInMilliseconds, IHystrixProperty <int> numberOfBuckets) { this.time = time; this.timeInMilliseconds = timeInMilliseconds; this.numberOfBuckets = numberOfBuckets; if (timeInMilliseconds.Get() % numberOfBuckets.Get() != 0) { throw new ArgumentException("The timeInMilliseconds must divide equally into numberOfBuckets. For example 1000/10 is ok, 1000/11 is not."); } this.buckets = new BucketCircularArray <Bucket>(numberOfBuckets.Get()); }
/// <summary> /// Initializes a new instance of the <see cref="HystrixRollingPercentile"/> class. /// </summary> /// <param name="time">The <see cref="ITime"/> instance to measure time.</param> /// <param name="timeInMilliseconds">Number of milliseconds of data that should be tracked.</param> /// <param name="numberOfBuckets">Number of buckets that the time window should be divided into.</param> /// <param name="bucketDataLength">Number of values stored in each bucket.</param> /// <param name="enabled">Sets whether data should be tracked and percentiles be calculated.</param> internal HystrixRollingPercentile(ITime time, IHystrixProperty <int> timeInMilliseconds, IHystrixProperty <int> numberOfBuckets, IHystrixProperty <int> bucketDataLength, IHystrixProperty <bool> enabled) { if (timeInMilliseconds.Get() % numberOfBuckets.Get() != 0) { throw new ArgumentException("The timeInMilliseconds must divide equally into numberOfBuckets. For example 1000/10 is ok, 1000/11 is not."); } this.time = time; this.timeInMilliseconds = timeInMilliseconds; this.numberOfBuckets = numberOfBuckets; this.bucketDataLength = bucketDataLength; this.enabled = enabled; this.buckets = new BucketCircularArray <Bucket>(this.numberOfBuckets.Get()); }