mirror of
https://github.com/netbirdio/gvisor.git
synced 2026-05-22 17:12:49 -07:00
gVisor metric library: Change interface for passing in field values.
This introduces a `metric.FieldValue` struct type that wraps a string. All metric interfaces that deal with field values have been updated to use pointers to this type instead of strings. The intent of this change is to make it more obvious that field values must be passed using references. Prior to this change, this was done using string pointer comparisons. Now this must be done by using a pointer to the same `metric.FieldValue` struct. The struct type still externally exposes its string so that it can be referred to in value function callbacks by "custom" metrics. (Though there are no current uses of callback metrics with fields.) PiperOrigin-RevId: 527030738
This commit is contained in:
committed by
gVisor bot
parent
ff4f0b9fc5
commit
a938259779
@@ -66,15 +66,24 @@ import (
|
||||
|
||||
const bitsPerUint32 = 32
|
||||
|
||||
// statCounterValue returns a function usable as callback function when defining a gVisor Sentry
|
||||
// metric that contains the value counted by the StatCounter.
|
||||
// This avoids a dependency loop in the tcpip package.
|
||||
func statCounterValue(cm *tcpip.StatCounter) func(...*metric.FieldValue) uint64 {
|
||||
return func(...*metric.FieldValue) uint64 {
|
||||
return cm.Value()
|
||||
}
|
||||
}
|
||||
|
||||
func mustCreateMetric(name, description string) *tcpip.StatCounter {
|
||||
var cm tcpip.StatCounter
|
||||
metric.MustRegisterCustomUint64Metric(name, true /* cumulative */, false /* sync */, description, cm.Value)
|
||||
metric.MustRegisterCustomUint64Metric(name, true /* cumulative */, false /* sync */, description, statCounterValue(&cm))
|
||||
return &cm
|
||||
}
|
||||
|
||||
func mustCreateGauge(name, description string) *tcpip.StatCounter {
|
||||
var cm tcpip.StatCounter
|
||||
metric.MustRegisterCustomUint64Metric(name, false /* cumulative */, false /* sync */, description, cm.Value)
|
||||
metric.MustRegisterCustomUint64Metric(name, false /* cumulative */, false /* sync */, description, statCounterValue(&cm))
|
||||
return &cm
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user