update conditional metrics usage

This commit is contained in:
ginuerzh 2022-07-29 21:18:01 +08:00
parent 5a15f53fc6
commit 513eefe034
5 changed files with 22 additions and 15 deletions

View File

@ -1,6 +1,8 @@
package bufpool package bufpool
import "sync" import (
"sync"
)
var ( var (
pools = []struct { pools = []struct {

View File

@ -2,7 +2,6 @@ package udp
import ( import (
"net" "net"
"sync"
"time" "time"
"github.com/go-gost/core/common/bufpool" "github.com/go-gost/core/common/bufpool"
@ -22,7 +21,7 @@ type listener struct {
conn net.PacketConn conn net.PacketConn
cqueue chan net.Conn cqueue chan net.Conn
connPool *connPool connPool *connPool
mux sync.Mutex // mux sync.Mutex
closed chan struct{} closed chan struct{}
errChan chan error errChan chan error
config *ListenConfig config *ListenConfig
@ -109,8 +108,8 @@ func (ln *listener) Close() error {
} }
func (ln *listener) getConn(raddr net.Addr) *conn { func (ln *listener) getConn(raddr net.Addr) *conn {
ln.mux.Lock() // ln.mux.Lock()
defer ln.mux.Unlock() // defer ln.mux.Unlock()
c, ok := ln.connPool.Get(raddr.String()) c, ok := ln.connPool.Get(raddr.String())
if ok { if ok {

View File

@ -29,7 +29,7 @@ var (
global Metrics = Noop() global Metrics = Noop()
) )
func SetGlobal(m Metrics) { func Init(m Metrics) {
if m != nil { if m != nil {
global = m global = m
} else { } else {
@ -37,8 +37,8 @@ func SetGlobal(m Metrics) {
} }
} }
func Global() Metrics { func IsEnabled() bool {
return global return global != Noop()
} }
type Gauge interface { type Gauge interface {

View File

@ -20,6 +20,9 @@ type serverConn struct {
} }
func WrapConn(service string, c net.Conn) net.Conn { func WrapConn(service string, c net.Conn) net.Conn {
if !metrics.IsEnabled() {
return c
}
return &serverConn{ return &serverConn{
service: service, service: service,
Conn: c, Conn: c,
@ -65,6 +68,9 @@ type packetConn struct {
} }
func WrapPacketConn(service string, pc net.PacketConn) net.PacketConn { func WrapPacketConn(service string, pc net.PacketConn) net.PacketConn {
if !metrics.IsEnabled() {
return pc
}
return &packetConn{ return &packetConn{
PacketConn: pc, PacketConn: pc,
service: service, service: service,

View File

@ -12,6 +12,10 @@ type listener struct {
} }
func WrapListener(service string, ln net.Listener) net.Listener { func WrapListener(service string, ln net.Listener) net.Listener {
if !metrics.IsEnabled() {
return ln
}
return &listener{ return &listener{
service: service, service: service,
Listener: ln, Listener: ln,
@ -24,9 +28,5 @@ func (ln *listener) Accept() (net.Conn, error) {
return nil, err return nil, err
} }
// metrics is not enabled
if metrics.Global() == metrics.Noop() {
return c, nil
}
return WrapConn(ln.service, c), nil return WrapConn(ln.service, c), nil
} }