func (c *Connection) startOutboundSpan(ctx context.Context, serviceName, methodName string, call *OutboundCall, startTime time.Time) opentracing.Span {
	var parent opentracing.SpanContext // ok to be nil
	if s := opentracing.SpanFromContext(ctx); s != nil {
		parent = s.Context()
	}
	span := c.Tracer().StartSpan(
		methodName,
		opentracing.ChildOf(parent),
		opentracing.StartTime(startTime),
	)
	if isTracingDisabled(ctx) {
		ext.SamplingPriority.Set(span, 0)
	}
	ext.SpanKindRPCClient.Set(span)
	ext.PeerService.Set(span, serviceName)
	c.setPeerHostPort(span)
	span.SetTag("as", call.callReq.Headers[ArgScheme])
	var injectable injectableSpan
	if err := injectable.initFromOpenTracing(span); err == nil {
		call.callReq.Tracing = Span(injectable)
	} else {
		call.callReq.Tracing.initRandom()
	}
	return span
}
func (c *Connection) startOutboundSpan(ctx context.Context, serviceName, methodName string, call *OutboundCall, startTime time.Time) opentracing.Span {
	var parent opentracing.SpanContext 
	if s := opentracing.SpanFromContext(ctx); s != nil {
		parent = s.Context()
	}
	span := c.Tracer().StartSpan(
		methodName,
		opentracing.ChildOf(parent),
		opentracing.StartTime(startTime),
	)
	if isTracingDisabled(ctx) {
		ext.SamplingPriority.Set(span, 0)
	}
	ext.SpanKindRPCClient.Set(span)
	ext.PeerService.Set(span, serviceName)
	c.setPeerHostPort(span)
	span.SetTag("as", call.callReq.Headers[ArgScheme])
	var injectable injectableSpan
	if err := injectable.initFromOpenTracing(span); err == nil {
		call.callReq.Tracing = Span(injectable)
	} else {
		call.callReq.Tracing.initRandom()
	}
	return span
}
func ( c * Connection ) startOutboundSpan ( ctx context . Context , serviceName , methodName string , call * OutboundCall , startTime time . Time ) opentracing . Span { var parent opentracing . SpanContext // ok to be nil if s := opentracing . SpanFromContext ( ctx ) ; s != nil { parent = s . Context ( ) } span := c . Tracer ( ) . StartSpan ( methodName , opentracing . ChildOf ( parent ) , opentracing . StartTime ( startTime ) , ) if isTracingDisabled ( ctx ) { ext . SamplingPriority . Set ( span , 0 ) } ext . SpanKindRPCClient . Set ( span ) ext . PeerService . Set ( span , serviceName ) c . setPeerHostPort ( span ) span . SetTag ( " " , call . callReq . Headers [ ArgScheme ] ) var injectable injectableSpan if err := injectable . initFromOpenTracing ( span ) ; err == nil { call . callReq . Tracing = Span ( injectable ) } else { call . callReq . Tracing . initRandom ( ) } return span }
// startOutboundSpan creates a new tracing span to represent the outbound RPC call.
// If the context already contains a span, it will be used as a parent, otherwise
// a new root span is created.
//
// If the tracer supports Zipkin-style trace IDs, then call.callReq.Tracing is
// initialized with those IDs. Otherwise it is assigned random values.
startOutboundSpan creates a new tracing span to represent the outbound RPC call . If the context already contains a span it will be used as a parent otherwise a new root span is created . If the tracer supports Zipkin - style trace IDs then call . callReq . Tracing is initialized with those IDs . Otherwise it is assigned random values .