in plugins/mux/match_interceptor.go [34:73]
func (n *MatchInterceptor) AfterInvoke(invocation operator.Invocation, results ...interface{}) error {
// only process with matched route
if matched, ok := results[0].(bool); !ok || !matched {
return nil
}
match, ok := invocation.Args()[1].(*RouteMatch)
req := invocation.Args()[0].(*http.Request)
if !ok || match == nil || match.Route == nil || req == nil {
return nil
}
span := tracing.ActiveSpan()
if span == nil {
return nil
}
// find matched template
var routePrefix, routePath string
for _, matcher := range match.Route.matchers {
if regexp, ok := matcher.(*routeRegexp); ok && regexp != nil {
if regexp.regexpType == 2 {
routePrefix = regexp.template
} else if regexp.regexpType == 0 {
routePath = regexp.template
}
}
}
opName := routePrefix
if routePath != "" {
opName = routePath
}
// re-set the operation name if route path/prefix not empty
if opName != "" {
span.SetOperationName(req.Method + ":" + opName)
}
return nil
}