spectator/meter/percentile_timer.go (26 lines of code) (raw):
package meter
import (
"fmt"
"github.com/Netflix/spectator-go/v2/spectator/writer"
"time"
)
// PercentileTimer represents timing events, while capturing the histogram
// (percentiles) of those values.
type PercentileTimer struct {
id *Id
writer writer.Writer
meterTypeSymbol string
}
func NewPercentileTimer(
id *Id,
writer writer.Writer,
) *PercentileTimer {
return &PercentileTimer{id, writer, "T"}
}
func (t *PercentileTimer) MeterId() *Id {
return t.id
}
// Record records the value for a single event.
func (t *PercentileTimer) Record(amount time.Duration) {
if amount >= 0 {
var line = fmt.Sprintf("%s:%s:%f", t.meterTypeSymbol, t.id.spectatordId, amount.Seconds())
t.writer.Write(line)
}
}