-
Notifications
You must be signed in to change notification settings - Fork 458
/
withlabels.go
62 lines (48 loc) · 1.63 KB
/
withlabels.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
package telemetry
import "time"
type withLabels struct {
metrics Metrics
labels []Label
}
var _ Metrics = (*withLabels)(nil)
func WithLabels(metrics Metrics, labels []Label) Metrics {
if len(labels) == 0 {
return metrics
}
return &withLabels{
metrics: metrics,
labels: labels,
}
}
func (w *withLabels) SetGauge(key []string, val float32) {
w.metrics.SetGaugeWithLabels(key, val, w.labels)
}
func (w *withLabels) SetGaugeWithLabels(key []string, val float32, labels []Label) {
w.metrics.SetGaugeWithLabels(key, val, w.combineLabels(labels))
}
func (w *withLabels) EmitKey(key []string, val float32) {
w.metrics.EmitKey(key, val)
}
func (w *withLabels) IncrCounter(key []string, val float32) {
w.metrics.IncrCounterWithLabels(key, val, w.labels)
}
func (w *withLabels) IncrCounterWithLabels(key []string, val float32, labels []Label) {
w.metrics.IncrCounterWithLabels(key, val, w.combineLabels(labels))
}
func (w *withLabels) AddSample(key []string, val float32) {
w.metrics.AddSampleWithLabels(key, val, w.labels)
}
func (w *withLabels) AddSampleWithLabels(key []string, val float32, labels []Label) {
w.metrics.AddSampleWithLabels(key, val, w.combineLabels(labels))
}
func (w *withLabels) MeasureSince(key []string, start time.Time) {
w.metrics.MeasureSinceWithLabels(key, start, w.labels)
}
func (w *withLabels) MeasureSinceWithLabels(key []string, start time.Time, labels []Label) {
w.metrics.MeasureSinceWithLabels(key, start, w.combineLabels(labels))
}
func (w *withLabels) combineLabels(labels []Label) (combined []Label) {
combined = append(combined, w.labels...)
combined = append(combined, labels...)
return combined
}