diff --git a/metrics/metrics.go b/metrics/metrics.go index 65652f3..79277e5 100644 --- a/metrics/metrics.go +++ b/metrics/metrics.go @@ -17,17 +17,21 @@ const ( type Labels map[string]string var ( - metrics Metrics = Noop() + global Metrics = Noop() ) func SetGlobal(m Metrics) { if m != nil { - metrics = m + global = m } else { - metrics = Noop() + global = Noop() } } +func Global() Metrics { + return global +} + type Gauge interface { Inc() Dec() @@ -51,13 +55,13 @@ type Metrics interface { } func GetCounter(name MetricName, labels Labels) Counter { - return metrics.Counter(name, labels) + return global.Counter(name, labels) } func GetGauge(name MetricName, labels Labels) Gauge { - return metrics.Gauge(name, labels) + return global.Gauge(name, labels) } func GetObserver(name MetricName, labels Labels) Observer { - return metrics.Observer(name, labels) + return global.Observer(name, labels) } diff --git a/metrics/wrapper/conn.go b/metrics/wrapper/conn.go index 5bcfda0..f2eb9a3 100644 --- a/metrics/wrapper/conn.go +++ b/metrics/wrapper/conn.go @@ -13,7 +13,7 @@ var ( errUnsupport = errors.New("unsupported operation") ) -// ServerConn is a server side Conn with metrics supported. +// serverConn is a server side Conn with metrics supported. type serverConn struct { net.Conn service string diff --git a/metrics/wrapper/listener.go b/metrics/wrapper/listener.go index e79f522..0a6451b 100644 --- a/metrics/wrapper/listener.go +++ b/metrics/wrapper/listener.go @@ -1,6 +1,10 @@ package wrapper -import "net" +import ( + "net" + + "github.com/go-gost/core/metrics" +) type listener struct { service string @@ -19,5 +23,10 @@ func (ln *listener) Accept() (net.Conn, error) { if err != nil { return nil, err } + + // metrics is not enabled + if metrics.Global() == metrics.Noop() { + return c, nil + } return WrapConn(ln.service, c), nil }