代码拉取完成,页面将自动刷新
package opentracing
import (
"strings"
"sync"
"github.com/kataras/iris/v12"
)
// OpentracingHeader is saving opentracing b3 header data
// field Headers is map[string][]string type
type OpentracingHeader struct {
sync.RWMutex
Headers interface{}
}
// OpentracingInf global variable to transmit opentracing b3 header data
var OpentracingInf = new(OpentracingHeader)
// SetHeaders set OpentracingHeader Headers function
func (oh *OpentracingHeader) SetHeaders(data interface{}) {
oh.Lock()
oh.Headers = data
oh.Unlock()
}
// GetHeaders get OpentracingHeader Headers function
func (oh *OpentracingHeader) GetHeaders() interface{} {
oh.RLock()
data := oh.Headers
oh.RUnlock()
return data
}
// Serve is for saving incoming request header of b3
func Serve(ctx iris.Context) {
data := make(map[string][]string)
headers := ctx.Request().Header
for key, value := range headers {
if strings.HasPrefix(key, "X-") || strings.HasPrefix(key, "x-") {
data[key] = value
}
}
OpentracingInf.SetHeaders(data)
ctx.Next()
}
// Inject b3 header to req header
// b3headers, ok := opentracing.OpentracingInf.GetHeaders().(map[string][]string)
// if ok {
// for key, value := range b3headers {
// if len(value) > 0 {
// req.Header.Set(key, value[0])
// }
// }
// }
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。