in xray/fasthttp.go [30:55]
func (h *fasthttpHandler) Handler(sn SegmentNamer, handler fasthttp.RequestHandler) fasthttp.RequestHandler {
return func(ctx *fasthttp.RequestCtx) {
auxCtx := context.Background()
if h.cfg != nil {
auxCtx = context.WithValue(context.Background(), fasthttpContextConfigKey, h.cfg)
ctx.SetUserValue(fasthttpContextConfigKey, h.cfg)
}
name := sn.Name(string(ctx.Request.Host()))
traceHeader := header.FromString(string(ctx.Request.Header.Peek(TraceIDHeaderKey)))
req, err := fasthttpToNetHTTPRequest(ctx)
if err != nil {
ctx.Logger().Printf("%s", err.Error())
ctx.Error("Internal Server Error", fasthttp.StatusInternalServerError)
return
}
_, seg := NewSegmentFromHeader(auxCtx, name, req, traceHeader)
defer seg.Close(nil)
ctx.SetUserValue(fasthttpContextKey, seg)
httpCaptureRequest(seg, req)
fasthttpTrace(seg, handler, ctx, traceHeader)
}
}