mirror of
https://github.com/eolinker/apinto
synced 2025-09-27 05:06:11 +08:00
httpCtx 副本包
This commit is contained in:
@@ -3,6 +3,7 @@ package http_context
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
http_context_copy "github.com/eolinker/apinto/node/http-context/http-context-copy"
|
||||
"net"
|
||||
"strings"
|
||||
"time"
|
||||
@@ -189,41 +190,17 @@ func (ctx *HttpContext) Clone() (eoscContext.EoContext, error) {
|
||||
return nil, fmt.Errorf("%s %w", "HttpContext", eoscContext.ErrEoCtxUnCloneable)
|
||||
}
|
||||
|
||||
cloneCtx := pool.Get().(*HttpContext)
|
||||
remoteAddr := ctx.fastHttpRequestCtx.RemoteAddr().String()
|
||||
ctxCopy := http_context_copy.NewContextCopy(ctx.fastHttpRequestCtx, ctx.requestID, ctx.port, ctx.labels)
|
||||
|
||||
cloneReq := fasthttp.AcquireRequest()
|
||||
ctx.proxyRequest.Request().CopyTo(cloneReq)
|
||||
cloneResp := fasthttp.AcquireResponse()
|
||||
ctx.response.Response.CopyTo(cloneResp)
|
||||
ctxCopy.SetCompleteHandler(ctx.completeHandler)
|
||||
ctxCopy.SetFinish(ctx.finishHandler)
|
||||
ctxCopy.SetUpstreamHostHandler(ctx.upstreamHostHandler)
|
||||
ctxCopy.SetApp(ctx.app)
|
||||
ctxCopy.SetBalance(ctx.balance)
|
||||
|
||||
//cloneRequestCtx := new(fasthttp.RequestCtx)
|
||||
//cloneRequestCtx.Request = *cloneReq
|
||||
//cloneRequestCtx.Response = *cloneResp
|
||||
cloneCtx.fastHttpRequestCtx = ctx.fastHttpRequestCtx //TODO
|
||||
//Ctx set retry,timeout TODO
|
||||
|
||||
cloneCtx.requestID = ctx.requestID //TODO
|
||||
cloneCtx.requestReader.reset(cloneReq, remoteAddr)
|
||||
cloneCtx.proxyRequest.reset(cloneReq, remoteAddr)
|
||||
cloneCtx.proxyRequests = cloneCtx.proxyRequests[:0]
|
||||
cloneCtx.response.reset(cloneResp)
|
||||
|
||||
cloneCtx.port = ctx.port
|
||||
cloneCtx.ctx = ctx.ctx
|
||||
|
||||
cloneCtx.completeHandler = ctx.completeHandler
|
||||
cloneCtx.finishHandler = ctx.finishHandler
|
||||
cloneCtx.upstreamHostHandler = ctx.upstreamHostHandler
|
||||
cloneCtx.app = ctx.app
|
||||
cloneCtx.balance = ctx.balance
|
||||
|
||||
cLabels := make(map[string]string, len(ctx.labels))
|
||||
for k, v := range ctx.labels {
|
||||
cLabels[k] = v
|
||||
}
|
||||
cloneCtx.labels = cLabels
|
||||
|
||||
return cloneCtx, nil
|
||||
return ctxCopy, nil
|
||||
}
|
||||
|
||||
// NewContext 创建Context
|
||||
|
Reference in New Issue
Block a user