/// <inheritdoc /> public IManagedTracer CreateTracer(TraceHeaderContext headerContext) { GaxPreconditions.CheckNotNull(headerContext, nameof(headerContext)); if (!ShouldTrace(headerContext)) { return(NullManagedTracer.Instance); } var traceId = headerContext.TraceId ?? _traceIdFactory.NextId(); return(SimpleManagedTracer.Create(_consumer, _projectId, traceId, headerContext.SpanId)); }
/// <inheritdoc /> internal IManagedTracer CreateTracer(ITraceContext traceContext) { GaxPreconditions.CheckNotNull(traceContext, nameof(traceContext)); if (!ShouldTrace(traceContext)) { return(NullManagedTracer.Instance); } var traceId = traceContext.TraceId ?? _traceIdFactory.NextId(); return(SimpleManagedTracer.Create(_consumer, _projectId, traceId, traceContext.SpanId)); }
/// <inheritdoc /> public IManagedTracer CreateTracer(TraceHeaderContext headerContext) { GaxPreconditions.CheckNotNull(headerContext, nameof(headerContext)); if (!ShouldTrace(headerContext)) { return(DoNothingTracer.Instance); } TraceProto trace = new TraceProto { ProjectId = _projectId, TraceId = headerContext.TraceId ?? _traceIdFactory.NextId(), }; return(SimpleManagedTracer.Create(_consumer, trace, headerContext.SpanId)); }
/// <summary> /// Creates a <see cref="TraceHeaderContext"/> from a header. /// </summary> /// <param name="header">The string value of the trace header. Can be null. /// See: https://cloud.google.com/trace/docs/faq </param> /// <param name="traceFallbackPredicate">Optional function to override and trace requests. Can be null.</param> public static TraceHeaderContext FromHeader(string header, Func <bool?> traceFallbackPredicate) { var traceHeaderContext = FromHeader(header); if (traceHeaderContext.ShouldTrace == null && traceFallbackPredicate != null) { bool?shouldTrace = traceFallbackPredicate(); if (shouldTrace == true) { return(new TraceHeaderContext( traceHeaderContext.TraceId ?? _traceIdFactory.NextId(), traceHeaderContext.SpanId ?? 0, shouldTrace)); } else if (shouldTrace == false) { return(new TraceHeaderContext( traceHeaderContext.TraceId, traceHeaderContext.SpanId, shouldTrace)); } } return(traceHeaderContext); }