internal RollingPercentileNumber(IClock clock, int timeInMs, int numberOfBuckets, int dataLength, IDynamicProperty<bool> enabled)
{
this.enabled = enabled;
this.TimeInMs = timeInMs;
this.clock = clock;
this.bucketSizeInMs = timeInMs / numberOfBuckets;
var cx = numberOfBuckets + 1; // + one spare
buckets = new Bucket[cx];
this.numberOfBuckets = numberOfBuckets;
for (int i = 0; i < cx; i++)
{
buckets[i] = new Bucket(dataLength);
}
buckets[0].bucketStartInMs = clock.EllapsedTimeInMs;
_percentileSnapshot = new PercentileSnapshot(GetBuckets().Select(b=>new SnapshotItem { Length = b.Length, Data = b.data }).ToArray());
}