trpc.group/trpc-go/trpc-go@v1.0.3/metrics/gauge.go (about) 1 // 2 // 3 // Tencent is pleased to support the open source community by making tRPC available. 4 // 5 // Copyright (C) 2023 THL A29 Limited, a Tencent company. 6 // All rights reserved. 7 // 8 // If you have downloaded a copy of the tRPC source code from Tencent, 9 // please note that tRPC source code is licensed under the Apache 2.0 License, 10 // A copy of the Apache 2.0 License is included in this file. 11 // 12 // 13 14 package metrics 15 16 // IGauge is the interface that emits gauge metrics. 17 type IGauge interface { 18 // Set sets the gauges absolute value. 19 Set(value float64) 20 } 21 22 // gauge defines the gauge. gauge is reported to each external Sink-able system. 23 type gauge struct { 24 name string 25 } 26 27 // Set updates the gauge value. 28 func (g *gauge) Set(v float64) { 29 if len(metricsSinks) == 0 { 30 return 31 } 32 r := NewSingleDimensionMetrics(g.name, v, PolicySET) 33 for _, sink := range metricsSinks { 34 sink.Report(r) 35 } 36 }