File: Coordinator\Messages\NodeGrantMessage.ExtendedFields.cs
Web Access
Project: src\msbuild\src\Framework\Microsoft.Build.Framework.csproj (Microsoft.Build.Framework)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.

using System;

namespace Microsoft.Build.Framework.Coordinator;

internal sealed partial record NodeGrantMessage
{
    /// <summary>
    ///  Flags describing which capability-gated fields are present in a <see cref="NodeGrantMessage"/> payload.
    /// </summary>
    /// <remarks>
    ///  Each flag corresponds to a capability that both the coordinator and the client must advertise during the
    ///  handshake before the associated field is written to (or expected on) the wire. Callers compute the
    ///  applicable flags from the negotiated capabilities of the peer they are writing to, so that peers which
    ///  predate a given capability -- and therefore don't know how to parse its field -- are never sent it.
    /// </remarks>
    [Flags]
    internal enum ExtendedFields : byte
    {
        /// <summary>
        ///  No capability-gated fields are present. This is the original, legacy shape.
        /// </summary>
        None = 0,

        /// <summary>
        ///  The payload includes a <see cref="Guid"/> root grant token, because both peers advertised the
        ///  <see cref="Capabilities.NestedGrants"/> capability.
        /// </summary>
        GrantId = 1 << 0,
    }
}