优化连接处理逻辑,增加超时设置;重构命令读取与错误处理;新增公共工具函数以简化错误处理

This commit is contained in:
2025-05-26 16:37:54 +08:00
parent 8c928a8321
commit c2dcae7af5
7 changed files with 205 additions and 154 deletions

41
utils/conn.go Normal file
View File

@@ -0,0 +1,41 @@
package utils
import (
"errors"
"fmt"
"io"
"log/slog"
"net"
"syscall"
)
func WarpConnErr(err error) error {
if err == nil {
return nil
}
var opErr *net.OpError
switch {
case errors.Is(err, net.ErrClosed):
slog.Debug("连接已关闭")
return nil
case errors.Is(err, io.EOF):
slog.Debug("连接被对端关闭")
return nil
case errors.As(err, &opErr):
switch {
case
errors.Is(opErr.Err, syscall.WSAECONNRESET), errors.Is(opErr.Err, syscall.WSAECONNABORTED),
errors.Is(opErr.Err, syscall.ECONNRESET), errors.Is(opErr.Err, syscall.ECONNABORTED):
slog.Debug("连接被对端重置")
return nil
case opErr.Timeout():
slog.Debug("连接已超时")
return nil
}
}
return fmt.Errorf("连接发生未处理的错误: %w", err)
}