forked from redpanda-data/connect
-
Notifications
You must be signed in to change notification settings - Fork 1
/
wrap_flat.go
123 lines (103 loc) · 2.74 KB
/
wrap_flat.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
package metrics
import (
"github.com/Jeffail/benthos/v3/lib/log"
)
//------------------------------------------------------------------------------
// flatStat is a representation of a single metric stat. Interactions with this
// stat are thread safe.
type flatStat struct {
path string
f Flat
}
// Incr increments a metric by an amount.
func (f *flatStat) Incr(count int64) error {
f.f.Incr(f.path, count)
return nil
}
// Decr decrements a metric by an amount.
func (f *flatStat) Decr(count int64) error {
f.f.Decr(f.path, count)
return nil
}
// Timing sets a timing metric.
func (f *flatStat) Timing(delta int64) error {
f.f.Timing(f.path, delta)
return nil
}
// Set sets a gauge metric.
func (f *flatStat) Set(value int64) error {
f.f.Gauge(f.path, value)
return nil
}
//------------------------------------------------------------------------------
// wrappedFlat implements the entire Type interface around a Flat type.
type wrappedFlat struct {
f Flat
}
// WrapFlat creates a Type around a Flat implementation.
func WrapFlat(f Flat) Type {
return &wrappedFlat{
f: f,
}
}
//------------------------------------------------------------------------------
// GetCounter returns a stat counter object for a path.
func (h *wrappedFlat) GetCounter(path string) StatCounter {
return &flatStat{
path: path,
f: h.f,
}
}
// GetCounterVec returns a stat counter object for a path with the labels
// discarded.
func (h *wrappedFlat) GetCounterVec(path string, n []string) StatCounterVec {
return fakeCounterVec(func([]string) StatCounter {
return &flatStat{
path: path,
f: h.f,
}
})
}
// GetTimer returns a stat timer object for a path.
func (h *wrappedFlat) GetTimer(path string) StatTimer {
return &flatStat{
path: path,
f: h.f,
}
}
// GetTimerVec returns a stat timer object for a path with the labels
// discarded.
func (h *wrappedFlat) GetTimerVec(path string, n []string) StatTimerVec {
return fakeTimerVec(func([]string) StatTimer {
return &flatStat{
path: path,
f: h.f,
}
})
}
// GetGauge returns a stat gauge object for a path.
func (h *wrappedFlat) GetGauge(path string) StatGauge {
return &flatStat{
path: path,
f: h.f,
}
}
// GetGaugeVec returns a stat timer object for a path with the labels
// discarded.
func (h *wrappedFlat) GetGaugeVec(path string, n []string) StatGaugeVec {
return fakeGaugeVec(func([]string) StatGauge {
return &flatStat{
path: path,
f: h.f,
}
})
}
// SetLogger does nothing.
func (h *wrappedFlat) SetLogger(log log.Modular) {
}
// Close stops the wrappedFlat object from aggregating metrics and cleans up
// resources.
func (h *wrappedFlat) Close() error {
return h.f.Close()
}
//------------------------------------------------------------------------------