utils.Close 泛型约束,忽略 nil 的情况,添加文档说明

This commit is contained in:
2025-02-25 11:39:54 +08:00
parent 6df7c94d37
commit 83fd749d50
2 changed files with 11 additions and 15 deletions

View File

@@ -4,8 +4,6 @@ import (
"bufio" "bufio"
"encoding/binary" "encoding/binary"
"fmt" "fmt"
"github.com/joho/godotenv"
"github.com/pkg/errors"
"io" "io"
"log/slog" "log/slog"
"net" "net"
@@ -13,6 +11,9 @@ import (
"proxy-server/pkg/utils" "proxy-server/pkg/utils"
"strconv" "strconv"
"time" "time"
"github.com/joho/godotenv"
"github.com/pkg/errors"
) )
type Config struct { type Config struct {
@@ -53,7 +54,7 @@ func control() error {
if err != nil { if err != nil {
return errors.Wrap(err, "连接失败") return errors.Wrap(err, "连接失败")
} }
defer utils.Close(&conn) defer utils.Close(conn)
// 请求转发端口 // 请求转发端口
slog.Info("注册转发端口", "port", cfg.FwdPort) slog.Info("注册转发端口", "port", cfg.FwdPort)
@@ -96,7 +97,7 @@ func data(tagLen byte, tagBuf []byte) error {
if err != nil { if err != nil {
return errors.Wrap(err, "连接失败") return errors.Wrap(err, "连接失败")
} }
defer utils.Close(&src) defer utils.Close(src)
// 发送 tag // 发送 tag
slog.Info("准备代理流量") slog.Info("准备代理流量")
@@ -126,7 +127,7 @@ func data(tagLen byte, tagBuf []byte) error {
if err != nil { if err != nil {
return errors.Wrap(err, "连接失败") return errors.Wrap(err, "连接失败")
} }
defer utils.Close(&dest) defer utils.Close(dest)
slog.Info("开始代理流量 " + src.RemoteAddr().String() + " <-> " + dest.RemoteAddr().String()) slog.Info("开始代理流量 " + src.RemoteAddr().String() + " <-> " + dest.RemoteAddr().String())
timer := time.Now() timer := time.Now()

View File

@@ -24,15 +24,10 @@ func ReadBuffer(reader io.Reader, size int) ([]byte, error) {
return buffer, nil return buffer, nil
} }
func Close[T any](v *T) { // Close 关闭对象,传入值绝对不能为 nil
if v == nil { func Close[T io.Closer](v T) {
return err := v.Close()
} if err != nil {
closer, ok := any(*v).(io.Closer) slog.Warn("对象关闭失败", "err", err)
if ok {
err := closer.Close()
if err != nil {
slog.Warn("对象关闭失败", "err", err)
}
} }
} }