public static void SetTraceparent(this Activity activity, string value)
        {
            if (activity.IsW3CActivity())
            {
                return;
            }

            // we only support 00 version and ignore caller version
            activity.SetVersion(W3CConstants.DefaultVersion);

            string traceId = null, parentSpanId = null, sampledStr = null;
            bool   isValid = false;

            var parts = value?.Split('-');

            if (parts != null && parts.Length == 4)
            {
                traceId      = parts[1];
                parentSpanId = parts[2];
                sampledStr   = parts[3];
                isValid      = TraceIdRegex.IsMatch(traceId) && SpanIdRegex.IsMatch(parentSpanId);
            }

            if (isValid)
            {
                byte.TryParse(sampledStr, NumberStyles.HexNumber, CultureInfo.InvariantCulture, out var sampled);

                // we always defer sampling
                if ((sampled & W3CConstants.RequestedTraceFlag) == W3CConstants.RequestedTraceFlag)
                {
                    activity.SetSampled(W3CConstants.TraceFlagRecordedAndRequested);
                }
                else
                {
                    activity.SetSampled(W3CConstants.TraceFlagRecordedAndNotRequested);
                }

                activity.SetParentSpanId(parentSpanId);
                activity.SetSpanId(W3CUtilities.GenerateSpanId());
                activity.SetTraceId(traceId);
            }
            else
            {
                activity.SetSampled(W3CConstants.TraceFlagRecordedAndNotRequested);
                activity.SetSpanId(W3CUtilities.GenerateSpanId());
                activity.SetTraceId(W3CUtilities.GenerateTraceId());
            }

            if (activity.Id == null)
            {
                // activity is not started yet
                activity.SetParentId(string.Concat("|", activity.GetTraceId(), ".", activity.GetParentSpanId(), "."));
            }
        }
        public static Activity GenerateW3CContext(this Activity activity)
        {
            activity.SetVersion(W3CConstants.DefaultVersion);
            activity.SetSampled(W3CConstants.TraceFlagRecordedAndNotRequested);
            activity.SetSpanId(W3CUtilities.GenerateSpanId());

            activity.SetTraceId(activity.RootId != null && TraceIdRegex.IsMatch(activity.RootId)
                ? activity.RootId
                : W3CUtilities.GenerateTraceId());

            return(activity);
        }