From 513eefe0349907137d0ef8752a97b6ac8548fc0f Mon Sep 17 00:00:00 2001 From: ginuerzh Date: Fri, 29 Jul 2022 21:18:01 +0800 Subject: [PATCH] update conditional metrics usage --- common/bufpool/pool.go | 4 +++- common/net/udp/listener.go | 13 ++++++------- metrics/metrics.go | 6 +++--- metrics/wrapper/conn.go | 6 ++++++ metrics/wrapper/listener.go | 8 ++++---- 5 files changed, 22 insertions(+), 15 deletions(-) diff --git a/common/bufpool/pool.go b/common/bufpool/pool.go index 31447c4..f975c7a 100644 --- a/common/bufpool/pool.go +++ b/common/bufpool/pool.go @@ -1,6 +1,8 @@ package bufpool -import "sync" +import ( + "sync" +) var ( pools = []struct { diff --git a/common/net/udp/listener.go b/common/net/udp/listener.go index 146ef09..312acba 100644 --- a/common/net/udp/listener.go +++ b/common/net/udp/listener.go @@ -2,7 +2,6 @@ package udp import ( "net" - "sync" "time" "github.com/go-gost/core/common/bufpool" @@ -22,10 +21,10 @@ type listener struct { conn net.PacketConn cqueue chan net.Conn connPool *connPool - mux sync.Mutex - closed chan struct{} - errChan chan error - config *ListenConfig + // mux sync.Mutex + closed chan struct{} + errChan chan error + config *ListenConfig } func NewListener(conn net.PacketConn, cfg *ListenConfig) net.Listener { @@ -109,8 +108,8 @@ func (ln *listener) Close() error { } func (ln *listener) getConn(raddr net.Addr) *conn { - ln.mux.Lock() - defer ln.mux.Unlock() + // ln.mux.Lock() + // defer ln.mux.Unlock() c, ok := ln.connPool.Get(raddr.String()) if ok { diff --git a/metrics/metrics.go b/metrics/metrics.go index ca6b3d9..4bf3740 100644 --- a/metrics/metrics.go +++ b/metrics/metrics.go @@ -29,7 +29,7 @@ var ( global Metrics = Noop() ) -func SetGlobal(m Metrics) { +func Init(m Metrics) { if m != nil { global = m } else { @@ -37,8 +37,8 @@ func SetGlobal(m Metrics) { } } -func Global() Metrics { - return global +func IsEnabled() bool { + return global != Noop() } type Gauge interface { diff --git a/metrics/wrapper/conn.go b/metrics/wrapper/conn.go index f2eb9a3..aa7a4f4 100644 --- a/metrics/wrapper/conn.go +++ b/metrics/wrapper/conn.go @@ -20,6 +20,9 @@ type serverConn struct { } func WrapConn(service string, c net.Conn) net.Conn { + if !metrics.IsEnabled() { + return c + } return &serverConn{ service: service, Conn: c, @@ -65,6 +68,9 @@ type packetConn struct { } func WrapPacketConn(service string, pc net.PacketConn) net.PacketConn { + if !metrics.IsEnabled() { + return pc + } return &packetConn{ PacketConn: pc, service: service, diff --git a/metrics/wrapper/listener.go b/metrics/wrapper/listener.go index 0a6451b..f663cb8 100644 --- a/metrics/wrapper/listener.go +++ b/metrics/wrapper/listener.go @@ -12,6 +12,10 @@ type listener struct { } func WrapListener(service string, ln net.Listener) net.Listener { + if !metrics.IsEnabled() { + return ln + } + return &listener{ service: service, Listener: ln, @@ -24,9 +28,5 @@ func (ln *listener) Accept() (net.Conn, error) { return nil, err } - // metrics is not enabled - if metrics.Global() == metrics.Noop() { - return c, nil - } return WrapConn(ln.service, c), nil }