metrics: added NewCounterForced (#17919)
This commit is contained in:
		
							parent
							
								
									2868acd80b
								
							
						
					
					
						commit
						4466c7b971
					
				| @ -1,6 +1,8 @@ | |||||||
| package metrics | package metrics | ||||||
| 
 | 
 | ||||||
| import "sync/atomic" | import ( | ||||||
|  | 	"sync/atomic" | ||||||
|  | ) | ||||||
| 
 | 
 | ||||||
| // Counters hold an int64 value that can be incremented and decremented.
 | // Counters hold an int64 value that can be incremented and decremented.
 | ||||||
| type Counter interface { | type Counter interface { | ||||||
| @ -20,6 +22,17 @@ func GetOrRegisterCounter(name string, r Registry) Counter { | |||||||
| 	return r.GetOrRegister(name, NewCounter).(Counter) | 	return r.GetOrRegister(name, NewCounter).(Counter) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | // GetOrRegisterCounterForced returns an existing Counter or constructs and registers a
 | ||||||
|  | // new Counter no matter the global switch is enabled or not.
 | ||||||
|  | // Be sure to unregister the counter from the registry once it is of no use to
 | ||||||
|  | // allow for garbage collection.
 | ||||||
|  | func GetOrRegisterCounterForced(name string, r Registry) Counter { | ||||||
|  | 	if nil == r { | ||||||
|  | 		r = DefaultRegistry | ||||||
|  | 	} | ||||||
|  | 	return r.GetOrRegister(name, NewCounterForced).(Counter) | ||||||
|  | } | ||||||
|  | 
 | ||||||
| // NewCounter constructs a new StandardCounter.
 | // NewCounter constructs a new StandardCounter.
 | ||||||
| func NewCounter() Counter { | func NewCounter() Counter { | ||||||
| 	if !Enabled { | 	if !Enabled { | ||||||
| @ -28,6 +41,12 @@ func NewCounter() Counter { | |||||||
| 	return &StandardCounter{0} | 	return &StandardCounter{0} | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | // NewCounterForced constructs a new StandardCounter and returns it no matter if
 | ||||||
|  | // the global switch is enabled or not.
 | ||||||
|  | func NewCounterForced() Counter { | ||||||
|  | 	return &StandardCounter{0} | ||||||
|  | } | ||||||
|  | 
 | ||||||
| // NewRegisteredCounter constructs and registers a new StandardCounter.
 | // NewRegisteredCounter constructs and registers a new StandardCounter.
 | ||||||
| func NewRegisteredCounter(name string, r Registry) Counter { | func NewRegisteredCounter(name string, r Registry) Counter { | ||||||
| 	c := NewCounter() | 	c := NewCounter() | ||||||
| @ -38,6 +57,19 @@ func NewRegisteredCounter(name string, r Registry) Counter { | |||||||
| 	return c | 	return c | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | // NewRegisteredCounterForced constructs and registers a new StandardCounter
 | ||||||
|  | // and launches a goroutine no matter the global switch is enabled or not.
 | ||||||
|  | // Be sure to unregister the counter from the registry once it is of no use to
 | ||||||
|  | // allow for garbage collection.
 | ||||||
|  | func NewRegisteredCounterForced(name string, r Registry) Counter { | ||||||
|  | 	c := NewCounterForced() | ||||||
|  | 	if nil == r { | ||||||
|  | 		r = DefaultRegistry | ||||||
|  | 	} | ||||||
|  | 	r.Register(name, c) | ||||||
|  | 	return c | ||||||
|  | } | ||||||
|  | 
 | ||||||
| // CounterSnapshot is a read-only copy of another Counter.
 | // CounterSnapshot is a read-only copy of another Counter.
 | ||||||
| type CounterSnapshot int64 | type CounterSnapshot int64 | ||||||
| 
 | 
 | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user