utils.Close 泛型约束,忽略 nil 的情况,添加文档说明
This commit is contained in:
@@ -4,8 +4,6 @@ import (
|
||||
"bufio"
|
||||
"encoding/binary"
|
||||
"fmt"
|
||||
"github.com/joho/godotenv"
|
||||
"github.com/pkg/errors"
|
||||
"io"
|
||||
"log/slog"
|
||||
"net"
|
||||
@@ -13,6 +11,9 @@ import (
|
||||
"proxy-server/pkg/utils"
|
||||
"strconv"
|
||||
"time"
|
||||
|
||||
"github.com/joho/godotenv"
|
||||
"github.com/pkg/errors"
|
||||
)
|
||||
|
||||
type Config struct {
|
||||
@@ -53,7 +54,7 @@ func control() error {
|
||||
if err != nil {
|
||||
return errors.Wrap(err, "连接失败")
|
||||
}
|
||||
defer utils.Close(&conn)
|
||||
defer utils.Close(conn)
|
||||
|
||||
// 请求转发端口
|
||||
slog.Info("注册转发端口", "port", cfg.FwdPort)
|
||||
@@ -96,7 +97,7 @@ func data(tagLen byte, tagBuf []byte) error {
|
||||
if err != nil {
|
||||
return errors.Wrap(err, "连接失败")
|
||||
}
|
||||
defer utils.Close(&src)
|
||||
defer utils.Close(src)
|
||||
|
||||
// 发送 tag
|
||||
slog.Info("准备代理流量")
|
||||
@@ -126,7 +127,7 @@ func data(tagLen byte, tagBuf []byte) error {
|
||||
if err != nil {
|
||||
return errors.Wrap(err, "连接失败")
|
||||
}
|
||||
defer utils.Close(&dest)
|
||||
defer utils.Close(dest)
|
||||
|
||||
slog.Info("开始代理流量 " + src.RemoteAddr().String() + " <-> " + dest.RemoteAddr().String())
|
||||
timer := time.Now()
|
||||
|
||||
@@ -24,15 +24,10 @@ func ReadBuffer(reader io.Reader, size int) ([]byte, error) {
|
||||
return buffer, nil
|
||||
}
|
||||
|
||||
func Close[T any](v *T) {
|
||||
if v == nil {
|
||||
return
|
||||
}
|
||||
closer, ok := any(*v).(io.Closer)
|
||||
if ok {
|
||||
err := closer.Close()
|
||||
if err != nil {
|
||||
slog.Warn("对象关闭失败", "err", err)
|
||||
}
|
||||
// Close 关闭对象,传入值绝对不能为 nil
|
||||
func Close[T io.Closer](v T) {
|
||||
err := v.Close()
|
||||
if err != nil {
|
||||
slog.Warn("对象关闭失败", "err", err)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user