client_golang/metrics/bucket.go

48 lines
1.1 KiB
Go

/*
Copyright (c) 2012, Matt T. Proud
All rights reserved.
Use of this source code is governed by a BSD-style
license that can be found in the LICENSE file.
*/
/*
bucket.go provides fundamental interface expectations for various bucket
types.
*/
package metrics
/*
The Histogram class and associated types build buckets on their own.
*/
type BucketBuilder func() Bucket
/*
This defines the base Bucket type. The exact behaviors of the bucket are
at the whim of the implementor.
A Bucket is used as a container by Histogram as a collection for its
accumulated samples.
*/
type Bucket interface {
/*
Add a value to the bucket.
*/
Add(value float64)
/*
Provide a humanized representation hereof.
*/
String() string
/*
Provide a count of observations throughout the bucket's lifetime.
*/
Observations() int
/*
Provide the value from the given in-memory value cache or an estimate
thereof for the given index. The consumer of the bucket's data makes
no assumptions about the underlying storage mechanisms that the bucket
employs.
*/
ValueForIndex(index int) float64
}