private static bool IsTracingEnabled(IRequestHeaders headers)
        {
            if (!Tracer.Instance.Settings.IsIntegrationEnabled(SocketHandlerIntegrationId, defaultValue: false))
            {
                return(false);
            }

            if (headers.TryGetValues(HttpHeaderNames.TracingEnabled, out var headerValues))
            {
                if (headerValues is string[] arrayValues)
                {
                    for (var i = 0; i < arrayValues.Length; i++)
                    {
                        if (string.Equals(arrayValues[i], "false", StringComparison.OrdinalIgnoreCase))
                        {
                            return(false);
                        }
                    }

                    return(true);
                }

                if (headerValues != null && headerValues.Any(s => string.Equals(s, "false", StringComparison.OrdinalIgnoreCase)))
                {
                    // tracing is disabled for this request via http header
                    return(false);
                }
            }

            return(true);
        }
Esempio n. 2
0
        private static bool IsTracingEnabled(IRequestHeaders headers, Func <bool> isTracingEnableFunc = null)
        {
            if (isTracingEnableFunc != null && !isTracingEnableFunc())
            {
                return(false);
            }

            if (headers.TryGetValues(HttpHeaderNames.TracingEnabled, out var headerValues))
            {
                if (headerValues is string[] arrayValues)
                {
                    for (var i = 0; i < arrayValues.Length; i++)
                    {
                        if (string.Equals(arrayValues[i], "false", StringComparison.OrdinalIgnoreCase))
                        {
                            return(false);
                        }
                    }

                    return(true);
                }

                if (headerValues != null && headerValues.Any(s => string.Equals(s, "false", StringComparison.OrdinalIgnoreCase)))
                {
                    // tracing is disabled for this request via http header
                    return(false);
                }
            }

            return(true);
        }
        public IEnumerable <string> GetValues(string name)
        {
            if (_headers.TryGetValues(name, out IEnumerable <string> values))
            {
                return(values);
            }

            return(Enumerable.Empty <string>());
        }