/
githubmirror
/
traefik
Обзор
Документация
Войти
/
githubmirror
/
traefik
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
pkg/observability/metrics/headers.go
57 строк
2 KB
mmatur
Merge current v2.11 into v3.6
16 янв 2026, 11:13
Не верифицирован
16 янв 2026, 11:13
3315a9f
Код
Авторство
О чём код?
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 } // CounterWithNoopHeaders is a counter that satisfies CounterWithHeaders but ignores the given http.Header. type CounterWithNoopHeaders struct { counter metrics.Counter } // NewCounterWithNoopHeaders returns a CounterWithNoopHeaders. func NewCounterWithNoopHeaders(counter metrics.Counter) CounterWithNoopHeaders { return CounterWithNoopHeaders{counter: 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...)) }