From 82f48d1248a422538c7d0845838595c142928fd5 Mon Sep 17 00:00:00 2001 From: yusing Date: Wed, 16 Apr 2025 12:12:46 +0800 Subject: [PATCH] refactor: code cleanup --- internal/api/v1/dockerapi/containers.go | 2 +- internal/route/stream_impl.go | 10 ++++----- internal/route/udp_forwarder.go | 6 +++--- internal/utils/functional/map.go | 27 ------------------------- 4 files changed, 9 insertions(+), 36 deletions(-) diff --git a/internal/api/v1/dockerapi/containers.go b/internal/api/v1/dockerapi/containers.go index eabac6da..9d98076c 100644 --- a/internal/api/v1/dockerapi/containers.go +++ b/internal/api/v1/dockerapi/containers.go @@ -18,7 +18,7 @@ type Container struct { } func Containers(w http.ResponseWriter, r *http.Request) { - serveHTTP[Container, []Container](w, r, GetContainers) + serveHTTP[Container](w, r, GetContainers) } func GetContainers(ctx context.Context, dockerClients DockerClients) ([]Container, gperr.Error) { diff --git a/internal/route/stream_impl.go b/internal/route/stream_impl.go index 316f6dbd..c6b95ddc 100644 --- a/internal/route/stream_impl.go +++ b/internal/route/stream_impl.go @@ -7,7 +7,7 @@ import ( "net" "time" - "github.com/yusing/go-proxy/internal/net/types" + gpnet "github.com/yusing/go-proxy/internal/net/types" U "github.com/yusing/go-proxy/internal/utils" ) @@ -15,7 +15,7 @@ type ( Stream struct { *StreamRoute - listener types.StreamListener + listener gpnet.StreamListener targetAddr net.Addr } ) @@ -56,7 +56,7 @@ func (stream *Stream) Setup() error { } // in case ListeningPort was zero, get the actual port stream.Port.Listening = tcpListener.Addr().(*net.TCPAddr).Port - stream.listener = types.NetListener(tcpListener) + stream.listener = gpnet.NetListener(tcpListener) case "udp": stream.targetAddr, err = net.ResolveUDPAddr("udp", stream.ProxyURL.Host) if err != nil { @@ -80,7 +80,7 @@ func (stream *Stream) Setup() error { return nil } -func (stream *Stream) Accept() (conn types.StreamConn, err error) { +func (stream *Stream) Accept() (conn gpnet.StreamConn, err error) { if stream.listener == nil { return nil, errors.New("listener is nil") } @@ -100,7 +100,7 @@ func (stream *Stream) Accept() (conn types.StreamConn, err error) { } } -func (stream *Stream) Handle(conn types.StreamConn) error { +func (stream *Stream) Handle(conn gpnet.StreamConn) error { switch conn := conn.(type) { case *UDPConn: switch stream := stream.listener.(type) { diff --git a/internal/route/udp_forwarder.go b/internal/route/udp_forwarder.go index 62149afa..23a4de80 100644 --- a/internal/route/udp_forwarder.go +++ b/internal/route/udp_forwarder.go @@ -8,7 +8,7 @@ import ( "github.com/yusing/go-proxy/internal/gperr" "github.com/yusing/go-proxy/internal/logging" - "github.com/yusing/go-proxy/internal/net/types" + gpnet "github.com/yusing/go-proxy/internal/net/types" F "github.com/yusing/go-proxy/internal/utils/functional" ) @@ -57,7 +57,7 @@ func (w *UDPForwarder) Addr() net.Addr { return w.forwarder.LocalAddr() } -func (w *UDPForwarder) Accept() (types.StreamConn, error) { +func (w *UDPForwarder) Accept() (gpnet.StreamConn, error) { buf := newUDPBuf() addr, err := w.readFromListener(buf) if err != nil { @@ -161,7 +161,7 @@ func (w *UDPForwarder) getInitConn(conn *UDPConn, key string) (*UDPConn, error) return dst, nil } -func (w *UDPForwarder) Handle(streamConn types.StreamConn) error { +func (w *UDPForwarder) Handle(streamConn gpnet.StreamConn) error { conn, ok := streamConn.(*UDPConn) if !ok { panic("unexpected conn type") diff --git a/internal/utils/functional/map.go b/internal/utils/functional/map.go index 5dcfde1b..1efc9abe 100644 --- a/internal/utils/functional/map.go +++ b/internal/utils/functional/map.go @@ -85,33 +85,6 @@ func (m Map[KT, VT]) CollectErrors(do func(k KT, v VT) error) []error { return errs } -// CollectErrors calls the given function for each key-value pair in the map, -// then returns a slice of errors collected. -func (m Map[KT, VT]) CollectErrorsParallel(do func(k KT, v VT) error) []error { - if m.Size() < minParallelSize { - return m.CollectErrors(do) - } - - var errs []error - var mu sync.Mutex - var wg sync.WaitGroup - - m.Range(func(k KT, v VT) bool { - wg.Add(1) - go func() { - if err := do(k, v); err != nil { - mu.Lock() - errs = append(errs, err) - mu.Unlock() - } - wg.Done() - }() - return true - }) - wg.Wait() - return errs -} - func (m Map[KT, VT]) Has(k KT) bool { _, ok := m.Load(k) return ok