mirror of
				https://github.com/traefik/traefik.git
				synced 2025-10-31 00:11:38 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			58 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			58 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| package metrics
 | |
| 
 | |
| import (
 | |
| 	"net/http"
 | |
| 
 | |
| 	"github.com/go-kit/kit/metrics"
 | |
| )
 | |
| 
 | |
| // CounterWithHeaders represents a counter that can use http.Header values as label values.
 | |
| type CounterWithHeaders interface {
 | |
| 	Add(delta float64)
 | |
| 	With(headers http.Header, labelValues ...string) CounterWithHeaders
 | |
| }
 | |
| 
 | |
| // MultiCounterWithHeaders collects multiple individual CounterWithHeaders and treats them as a unit.
 | |
| type MultiCounterWithHeaders []CounterWithHeaders
 | |
| 
 | |
| // NewMultiCounterWithHeaders returns a multi-counter, wrapping the passed CounterWithHeaders.
 | |
| func NewMultiCounterWithHeaders(c ...CounterWithHeaders) MultiCounterWithHeaders {
 | |
| 	return c
 | |
| }
 | |
| 
 | |
| // Add adds the given delta value to the counter value.
 | |
| func (c MultiCounterWithHeaders) Add(delta float64) {
 | |
| 	for _, counter := range c {
 | |
| 		counter.Add(delta)
 | |
| 	}
 | |
| }
 | |
| 
 | |
| // With creates a new counter by appending the given label values and http.Header as labels and returns it.
 | |
| func (c MultiCounterWithHeaders) With(headers http.Header, labelValues ...string) CounterWithHeaders {
 | |
| 	next := make(MultiCounterWithHeaders, len(c))
 | |
| 	for i := range c {
 | |
| 		next[i] = c[i].With(headers, labelValues...)
 | |
| 	}
 | |
| 	return next
 | |
| }
 | |
| 
 | |
| // NewCounterWithNoopHeaders returns a CounterWithNoopHeaders.
 | |
| func NewCounterWithNoopHeaders(counter metrics.Counter) CounterWithNoopHeaders {
 | |
| 	return CounterWithNoopHeaders{counter: counter}
 | |
| }
 | |
| 
 | |
| // CounterWithNoopHeaders is a counter that satisfies CounterWithHeaders but ignores the given http.Header.
 | |
| type CounterWithNoopHeaders struct {
 | |
| 	counter metrics.Counter
 | |
| }
 | |
| 
 | |
| // Add adds the given delta value to the counter value.
 | |
| func (c CounterWithNoopHeaders) Add(delta float64) {
 | |
| 	c.counter.Add(delta)
 | |
| }
 | |
| 
 | |
| // With creates a new counter by appending the given label values and returns it.
 | |
| func (c CounterWithNoopHeaders) With(_ http.Header, labelValues ...string) CounterWithHeaders {
 | |
| 	return NewCounterWithNoopHeaders(c.counter.With(labelValues...))
 | |
| }
 |