| File: System\Diagnostics\Activity.GenerateRootId.netcoreapp.cs | Web Access |
| Project: src\runtime\src\libraries\System.Diagnostics.DiagnosticSource\src\System.Diagnostics.DiagnosticSource.csproj (System.Diagnostics.DiagnosticSource) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using System; using System.Threading; namespace System.Diagnostics { partial class Activity { private static unsafe string GenerateRootId() { // It is important that the part that changes frequently be first, because // some sampling functions don't sample from the high entropy part of their hash function. // This makes sampling based on this produce poor samples. Debug.Assert(s_uniqSuffix.Length < 50); // Ensure stackalloc not too large Span<char> result = stackalloc char[1 + 16 + s_uniqSuffix.Length]; // max length needed result[0] = '|'; bool formatted = Interlocked.Increment(ref s_currentRootId).TryFormat(result.Slice(1), out int charsWritten, "x"); Debug.Assert(formatted); s_uniqSuffix.AsSpan().CopyTo(result.Slice(1 + charsWritten)); return new string(result.Slice(0, 1 + charsWritten + s_uniqSuffix.Length)); } } }