influxdb/pkg/metrics/group.go

38 lines
1.1 KiB
Go

package metrics
// The Group type represents an instance of a set of measurements that are used for
// instrumenting a specific request.
type Group struct {
g *groupRegistry
counters []Counter
timers []Timer
}
// Name returns the name of the group.
func (g *Group) Name() string { return g.g.desc.Name }
// GetCounter returns the counter identified by the id that was returned
// by MustRegisterCounter for the same group.
// Using an id from a different group will result in undefined behavior.
func (g *Group) GetCounter(id ID) *Counter { return &g.counters[id.id()] }
// GetTimer returns the timer identified by the id that was returned
// by MustRegisterTimer for the same group.
// Using an id from a different group will result in undefined behavior.
func (g *Group) GetTimer(id ID) *Timer { return &g.timers[id.id()] }
// The Metric type defines a Name
type Metric interface {
Name() string
}
// ForEach calls fn for all measurements of the group.
func (g *Group) ForEach(fn func(v Metric)) {
for i := range g.counters {
fn(&g.counters[i])
}
for i := range g.timers {
fn(&g.timers[i])
}
}