github.com/codingfuture/orig-energi3@v0.8.4/swarm/spancontext/spancontext.go (about) 1 // Copyright 2018 The Energi Core Authors 2 // Copyright 2018 The go-ethereum Authors 3 // This file is part of the Energi Core library. 4 // 5 // The Energi Core library is free software: you can redistribute it and/or modify 6 // it under the terms of the GNU Lesser General Public License as published by 7 // the Free Software Foundation, either version 3 of the License, or 8 // (at your option) any later version. 9 // 10 // The Energi Core library is distributed in the hope that it will be useful, 11 // but WITHOUT ANY WARRANTY; without even the implied warranty of 12 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 // GNU Lesser General Public License for more details. 14 // 15 // You should have received a copy of the GNU Lesser General Public License 16 // along with the Energi Core library. If not, see <http://www.gnu.org/licenses/>. 17 18 package spancontext 19 20 import ( 21 "context" 22 23 opentracing "github.com/opentracing/opentracing-go" 24 ) 25 26 func WithContext(ctx context.Context, sctx opentracing.SpanContext) context.Context { 27 return context.WithValue(ctx, "span_context", sctx) 28 } 29 30 func FromContext(ctx context.Context) opentracing.SpanContext { 31 sctx, ok := ctx.Value("span_context").(opentracing.SpanContext) 32 if ok { 33 return sctx 34 } 35 36 return nil 37 } 38 39 func StartSpan(ctx context.Context, name string) (context.Context, opentracing.Span) { 40 tracer := opentracing.GlobalTracer() 41 42 sctx := FromContext(ctx) 43 44 var sp opentracing.Span 45 if sctx != nil { 46 sp = tracer.StartSpan( 47 name, 48 opentracing.ChildOf(sctx)) 49 } else { 50 sp = tracer.StartSpan(name) 51 } 52 53 nctx := context.WithValue(ctx, "span_context", sp.Context()) 54 55 return nctx, sp 56 } 57 58 func StartSpanFrom(name string, sctx opentracing.SpanContext) opentracing.Span { 59 tracer := opentracing.GlobalTracer() 60 61 sp := tracer.StartSpan( 62 name, 63 opentracing.ChildOf(sctx)) 64 65 return sp 66 }