public static bool TryParse()

in sdk/src/Core/Internal/Entities/TraceHeader.cs [69:128]


        public static bool TryParse(string rawHeader, out TraceHeader header)
        {
            header = null;

            try
            {
                if (string.IsNullOrEmpty(rawHeader))
                {
                    return false;
                }

                var result = new TraceHeader();

                Dictionary<string, string> keyValuePairs = rawHeader.Split(_validSeparators, StringSplitOptions.RemoveEmptyEntries)
                    .Select(value => value.Trim().Split('='))
                    .ToDictionary(pair => pair[0], pair => pair[1]);


                // Root trace id is required
                if (!keyValuePairs.TryGetValue(RootKey, out string tmpValue))
                {
                    return false;
                }

                if (!TraceId.IsIdValid(tmpValue))
                {
                    return false;
                }

                result.RootTraceId = tmpValue;

                // Parent id is optional
                if (keyValuePairs.TryGetValue(ParentKey, out tmpValue))
                {
                    if (!Entity.IsIdValid(tmpValue))
                    {
                        return false;
                    }

                    result.ParentId = tmpValue;
                }

                // Sample decision is optional
                if (keyValuePairs.TryGetValue(SampledKey, out tmpValue) && char.TryParse(tmpValue, out char tmpChar))
                {
                    if (Enum.IsDefined(typeof(SampleDecision), (int)tmpChar))
                    {
                        result.Sampled = (SampleDecision)tmpChar;
                    }
                }

                header = result;
                return true;
            }
            catch (IndexOutOfRangeException e)
            {
                _logger.Error(e, "Invalid trace header from string: {0}", rawHeader);
                return false;
            }
        }