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  }