Esempio n. 1
0
        /// <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));
        }
Esempio n. 2
0
        /// <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));
        }
Esempio n. 3
0
        /// <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);
        }