<PackageReference Include="System.Diagnostics.DiagnosticSource" Version="9.0.9" />

DsesSamplerBuilder

static class DsesSamplerBuilder
using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace System.Diagnostics { internal static class DsesSamplerBuilder { public static DsesSampleActivityFunc CreateParentRatioSampler(double ratio) { long idUpperBound = (ratio <= 0) ? (-9223372036854775808) : ((ratio >= 1) ? 9223372036854775807 : ((long)(ratio * 9.223372036854776E+18))); return delegate(bool hasActivityContext, ref ActivityCreationOptions<ActivityContext> options) { if (hasActivityContext && options.TraceId != default(ActivityTraceId)) { ActivityContext parentContext = options.Parent; ActivitySamplingResult activitySamplingResult = ParentRatioSampler(idUpperBound, ref parentContext, options.TraceId); if (activitySamplingResult != 0 || (!(parentContext == default(ActivityContext)) && !parentContext.IsRemote)) return activitySamplingResult; return ActivitySamplingResult.PropagationData; } return ActivitySamplingResult.None; }; } public unsafe static ActivitySamplingResult ParentRatioSampler(long idUpperBound, [In] [System.Runtime.CompilerServices.IsReadOnly] ref ActivityContext parentContext, ActivityTraceId traceId) { if (parentContext.TraceId != default(ActivityTraceId)) { if (!parentContext.TraceFlags.HasFlag(ActivityTraceFlags.Recorded)) return ActivitySamplingResult.None; return ActivitySamplingResult.AllDataAndRecorded; } Span<byte> span = new Span<byte>(stackalloc byte[16], 16); traceId.CopyTo(span); if (Math.Abs(<ParentRatioSampler>g__GetLowerLong|1_0(span)) >= idUpperBound) return ActivitySamplingResult.None; return ActivitySamplingResult.AllDataAndRecorded; } } }