]> 127.0.0.1 Git - front/.git/commitdiff
1 v0.1.20250318073405
authorqydysky <qydysky@foxmail.com>
Tue, 18 Mar 2025 07:32:44 +0000 (07:32 +0000)
committerGitHub <noreply@github.com>
Tue, 18 Mar 2025 07:32:44 +0000 (07:32 +0000)
README.md
config.go
http.go
local.go
main.go
ws.go

index c950cedf927877555f42c803547018734eccb794..315eeab8a297be179755b189514c91342da42957 100755 (executable)
--- a/README.md
+++ b/README.md
@@ -74,7 +74,7 @@ config:
 
 - *addr*: string 监听端口 例:`0.0.0.0:8081`
 - *matchRule*: string 匹配规则,默认`prefix`。 `prefix`:当未匹配到时,返回最近的/匹配, `all`:当未匹配到时,返回404
-- reqIdLoop: int 请求id环大小,用于日志识别请求,默认`1000`
+- reqIdLoop: uint 请求id环大小,用于日志识别请求,默认`1000`
 - *copyBlocks*: int 转发的块数量,默认`1000`
 - *retryBlocks*: {} 重试, 当停用时,分配仅进行一次。当所有块都在使用中时,跳过。当请求没有`Content-Length`时,跳过。
     - *size*: string 重试的块大小,默认`1M`
index 80bdf836c9c3196adc53fa51a710ee4898cc434d..22dd634427d1381633aab6495c17c1c698c962a4 100755 (executable)
--- a/config.go
+++ b/config.go
@@ -8,6 +8,7 @@ import (
        "errors"
        "fmt"
        "io"
+       "math"
        "net"
        "net/http"
        "os"
@@ -47,8 +48,8 @@ type Config struct {
        routeMap sync.Map `json:"-"`
        Routes   []Route  `json:"routes"`
 
-       ReqIdLoop int          `json:"reqIdLoop"`
-       reqId     atomic.Int64 `json:"-"`
+       ReqIdLoop int           `json:"reqIdLoop"`
+       reqId     atomic.Uint32 `json:"-"`
 }
 
 func (t *Config) Run(ctx context.Context, logger Logger) {
@@ -71,9 +72,12 @@ func (t *Config) Run(ctx context.Context, logger Logger) {
                        }
                }
        }
-       if t.ReqIdLoop == 0 {
+       if t.ReqIdLoop <= 0 {
                t.ReqIdLoop = 1000
+       } else if t.ReqIdLoop > math.MaxUint32 {
+               t.ReqIdLoop = math.MaxUint32
        }
+
        if t.BlocksI == nil {
                if t.CopyBlocks == 0 {
                        t.CopyBlocks = 1000
@@ -148,7 +152,7 @@ func (t *Config) SwapSign(ctx context.Context, logger Logger) {
                        t.routeP.Store(routePath, func(w http.ResponseWriter, r *http.Request) {
 
                                reqId := t.reqId.Add(1)
-                               if reqId >= int64(t.ReqIdLoop) {
+                               if reqId >= uint32(t.ReqIdLoop) {
                                        t.reqId.Store(0)
                                }
 
@@ -233,7 +237,7 @@ func (t *Config) SwapSign(ctx context.Context, logger Logger) {
                                var e error = ErrAllBacksFail
 
                                type reqDealer interface {
-                                       Deal(ctx context.Context, reqId int64, w http.ResponseWriter, r *http.Request, routePath string, chosenBack *Back, logger Logger, blocksi pslice.BlocksI[byte]) error
+                                       Deal(ctx context.Context, reqId uint32, w http.ResponseWriter, r *http.Request, routePath string, chosenBack *Back, logger Logger, blocksi pslice.BlocksI[byte]) error
                                }
 
                                // repack
diff --git a/http.go b/http.go
index 6db6dd02dc94f0dfb6c688b1a168725128a0d559..2a7dfd83e820f020f5e8b3d15822e4918142b084 100644 (file)
--- a/http.go
+++ b/http.go
@@ -18,7 +18,7 @@ import (
 
 func init() {
        type I interface {
-               Deal(ctx context.Context, reqId int64, w http.ResponseWriter, r *http.Request, routePath string, chosenBack *Back, logger Logger, blocksi pslice.BlocksI[byte]) error
+               Deal(ctx context.Context, reqId uint32, w http.ResponseWriter, r *http.Request, routePath string, chosenBack *Back, logger Logger, blocksi pslice.BlocksI[byte]) error
        }
        if e := component2.Register[I]("http", httpDealer{}); e != nil {
                panic(e)
@@ -27,7 +27,7 @@ func init() {
 
 type httpDealer struct{}
 
-func (httpDealer) Deal(ctx context.Context, reqId int64, w http.ResponseWriter, r *http.Request, routePath string, chosenBack *Back, logger Logger, blocksi pslice.BlocksI[byte]) error {
+func (httpDealer) Deal(ctx context.Context, reqId uint32, w http.ResponseWriter, r *http.Request, routePath string, chosenBack *Back, logger Logger, blocksi pslice.BlocksI[byte]) error {
        var (
                opT       = time.Now()
                resp      *http.Response
index 1f1cbc9890f8e4047e79c3ea579b8c03eadfe9f1..85eab757a07d61f699dbcfaf2f847bb3852f5f4f 100644 (file)
--- a/local.go
+++ b/local.go
@@ -16,7 +16,7 @@ import (
 
 func init() {
        type I interface {
-               Deal(ctx context.Context, reqId int64, w http.ResponseWriter, r *http.Request, routePath string, chosenBack *Back, logger Logger, blocksi pslice.BlocksI[byte]) error
+               Deal(ctx context.Context, reqId uint32, w http.ResponseWriter, r *http.Request, routePath string, chosenBack *Back, logger Logger, blocksi pslice.BlocksI[byte]) error
        }
        if e := component2.Register[I]("local", localDealer{}); e != nil {
                panic(e)
@@ -25,7 +25,7 @@ func init() {
 
 type localDealer struct{}
 
-func (localDealer) Deal(ctx context.Context, reqId int64, w http.ResponseWriter, r *http.Request, routePath string, chosenBack *Back, logger Logger, blocksi pslice.BlocksI[byte]) error {
+func (localDealer) Deal(ctx context.Context, reqId uint32, w http.ResponseWriter, r *http.Request, routePath string, chosenBack *Back, logger Logger, blocksi pslice.BlocksI[byte]) error {
        var (
                opT       = time.Now()
                logFormat = "%v %v%v > %v local %v %v %v"
diff --git a/main.go b/main.go
index e18543e2901c9e6c7fae7c4491bd3c7f9907a54c..bbc8eb38d262a6608851f689db3237f4096fa89c 100755 (executable)
--- a/main.go
+++ b/main.go
@@ -185,7 +185,7 @@ var (
        ErrCopy              = errors.New("ErrCopy")
        ErrReqReBodyFail     = errors.New("ErrReqReBodyFail")
        ErrReqReBodyOverflow = errors.New("ErrReqReBodyOverflow")
-       ErrReqRetry = errors.New("ErrReqRetry")
+       ErrReqRetry          = errors.New("ErrReqRetry")
        ErrReqCreFail        = errors.New("ErrReqCreFail")
        ErrReqDoFail         = errors.New("ErrReqDoFail")
        ErrResDoFail         = errors.New("ErrResDoFail")
diff --git a/ws.go b/ws.go
index 8324ba93bc194f1d4407caa32e602e70866ac65b..ecd9071abd97054a01f5c9fe96f70537610b58ce 100644 (file)
--- a/ws.go
+++ b/ws.go
@@ -27,7 +27,7 @@ import (
 
 func init() {
        type I interface {
-               Deal(ctx context.Context, reqId int64, w http.ResponseWriter, r *http.Request, routePath string, chosenBack *Back, logger Logger, blocksi pslice.BlocksI[byte]) error
+               Deal(ctx context.Context, reqId uint32, w http.ResponseWriter, r *http.Request, routePath string, chosenBack *Back, logger Logger, blocksi pslice.BlocksI[byte]) error
        }
        if e := component2.Register[I]("ws", wsDealer{}); e != nil {
                panic(e)
@@ -36,7 +36,7 @@ func init() {
 
 type wsDealer struct{}
 
-func (wsDealer) Deal(ctx context.Context, reqId int64, w http.ResponseWriter, r *http.Request, routePath string, chosenBack *Back, logger Logger, blocksi pslice.BlocksI[byte]) error {
+func (wsDealer) Deal(ctx context.Context, reqId uint32, w http.ResponseWriter, r *http.Request, routePath string, chosenBack *Back, logger Logger, blocksi pslice.BlocksI[byte]) error {
        var (
                opT       = time.Now()
                resp      *http.Response