| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- package spancontext
- import (
- "context"
- opentracing "github.com/opentracing/opentracing-go"
- )
- func WithContext(ctx context.Context, sctx opentracing.SpanContext) context.Context {
- return context.WithValue(ctx, "span_context", sctx)
- }
- func FromContext(ctx context.Context) opentracing.SpanContext {
- sctx, ok := ctx.Value("span_context").(opentracing.SpanContext)
- if ok {
- return sctx
- }
- return nil
- }
- func StartSpan(ctx context.Context, name string) (context.Context, opentracing.Span) {
- tracer := opentracing.GlobalTracer()
- sctx := FromContext(ctx)
- var sp opentracing.Span
- if sctx != nil {
- sp = tracer.StartSpan(
- name,
- opentracing.ChildOf(sctx))
- } else {
- sp = tracer.StartSpan(name)
- }
- nctx := context.WithValue(ctx, "span_context", sp.Context())
- return nctx, sp
- }
- func StartSpanFrom(name string, sctx opentracing.SpanContext) opentracing.Span {
- tracer := opentracing.GlobalTracer()
- sp := tracer.StartSpan(
- name,
- opentracing.ChildOf(sctx))
- return sp
- }
|