OSDN Git Service

new repo
[bytom/vapor.git] / vendor / github.com / go-kit / kit / metrics / provider / statsd.go
1 package provider
2
3 import (
4         "github.com/go-kit/kit/metrics"
5         "github.com/go-kit/kit/metrics/statsd"
6 )
7
8 type statsdProvider struct {
9         s    *statsd.Statsd
10         stop func()
11 }
12
13 // NewStatsdProvider wraps the given Statsd object and stop func and returns a
14 // Provider that produces Statsd metrics. A typical stop function would be
15 // ticker.Stop from the ticker passed to the SendLoop helper method.
16 func NewStatsdProvider(s *statsd.Statsd, stop func()) Provider {
17         return &statsdProvider{
18                 s:    s,
19                 stop: stop,
20         }
21 }
22
23 // NewCounter implements Provider.
24 func (p *statsdProvider) NewCounter(name string) metrics.Counter {
25         return p.s.NewCounter(name, 1.0)
26 }
27
28 // NewGauge implements Provider.
29 func (p *statsdProvider) NewGauge(name string) metrics.Gauge {
30         return p.s.NewGauge(name)
31 }
32
33 // NewHistogram implements Provider, returning a StatsD Timing that accepts
34 // observations in milliseconds. The sample rate is fixed at 1.0. The bucket
35 // parameter is ignored.
36 func (p *statsdProvider) NewHistogram(name string, _ int) metrics.Histogram {
37         return p.s.NewTiming(name, 1.0)
38 }
39
40 // Stop implements Provider, invoking the stop function passed at construction.
41 func (p *statsdProvider) Stop() {
42         p.stop()
43 }