spectator/meter/dist_summary.go (22 lines of code) (raw):
package meter
import (
"fmt"
"github.com/Netflix/spectator-go/v2/spectator/writer"
)
// DistributionSummary is used to track the distribution of events. This is safe
// for concurrent use.
//
// You can find more about this type by viewing the relevant Java Spectator
// documentation here:
//
// https://netflix.github.io/spectator/en/latest/intro/dist-summary/
type DistributionSummary struct {
id *Id
writer writer.Writer
meterTypeSymbol string
}
// NewDistributionSummary generates a new distribution summary, using the
// provided meter identifier.
func NewDistributionSummary(id *Id, writer writer.Writer) *DistributionSummary {
return &DistributionSummary{id, writer, "d"}
}
// MeterId returns the meter identifier.
func (d *DistributionSummary) MeterId() *Id {
return d.id
}
// Record records a value to track within the distribution.
func (d *DistributionSummary) Record(amount int64) {
if amount >= 0 {
var line = fmt.Sprintf("%s:%s:%d", d.meterTypeSymbol, d.id.spectatordId, amount)
d.writer.Write(line)
}
}