@@ -72,7 +72,7 @@ var Expv = struct {
7272}{
7373 RouterCacheCall : expvar .NewInt ("RouterCache.Call" ),
7474 RouterCacheHits : expvar .NewInt ("RouterCache.Hits" ),
75- RouterCacheRate : NewExpvarRate ("RouterCache.Rate" , "RouterCache.Hits" , "RouterCache.Call" ),
75+ RouterCacheRate : NewExpvarPercent ("RouterCache.Rate" , "RouterCache.Hits" , "RouterCache.Call" ),
7676 RouterIPNetCall : expvar .NewInt ("RouterIPNet.Call" ),
7777 RouterIPNetTime : NewExpvarAverage ("RouterIPNet.Time" , 64 ),
7878}
@@ -1078,11 +1078,11 @@ func NewExpvarAverage(name string, length int) *ExpvarAverage {
10781078 }
10791079}
10801080
1081- // NewExpvarRate creates a new expvar.Func that calculates the ratio of two expvar.Int metrics.
1082- func NewExpvarRate (name string , n string , d string ) expvar.Func {
1081+ // NewExpvarPercent creates a new expvar.Func that calculates the ratio of two expvar.Int or expvar.Float metrics.
1082+ func NewExpvarPercent (name string , n string , d string ) expvar.Func {
10831083 f := expvar .Func (func () any {
1084- v := expvar . Get ( n ).( * expvar.Int ). Value ( )
1085- w := expvar . Get ( d ).( * expvar.Int ). Value ( )
1084+ v := doa . Try ( strconv . ParseFloat ( expvar .Get ( n ). String (), 64 ) )
1085+ w := doa . Try ( strconv . ParseFloat ( expvar .Get ( d ). String (), 64 ) )
10861086 return float64 (v ) / float64 (max (1 , w ))
10871087 })
10881088 expvar .Publish (name , f )
0 commit comments