func WithContextTags(fn func(ctx context.Context) []TraceTag) TraceOption {
	return func(opts *TraceOptions) {
		opts.ctxTagFn = fn
	}
}
WithContextTags defines a function that returns set of trace tags. This is
useful to extract values from the request ctx and return a set of tags that
are set on the span. The function is used during the `RequestReceived`
server hook.
package ottwirp
import (
	"context"
	"net/http"
	"strconv"
	ot "github.com/opentracing/opentracing-go"
	"github.com/opentracing/opentracing-go/ext"
	otlog "github.com/opentracing/opentracing-go/log"
	"github.com/twitchtv/twirp"
)
const (
	RequestReceivedEvent = "request.received"
)
type tracingInfoKey struct{}
type TraceServerHooks struct {
	Tracer ot.Tracer
	opts   *TraceOptions
}
type TraceOptions struct {
	includeClientErrors bool
	tags                []TraceTag
	ctxTagFn            func(ctx context.Context) []TraceTag
}
type TraceTag struct {
	Key string
	Value interface{}
}
type TraceOption func(opts *TraceOptions)
func IncludeClientErrors(includeClientErrors bool) TraceOption {
	return func(opts *TraceOptions) {
		opts.includeClientErrors = includeClientErrors
	}
}
func WithTags(tags ...TraceTag) TraceOption {
	return func(opts *TraceOptions) {
		opts.tags = tags
	}
}