namespace ZB.MOM.WW.ScadaBridge.Communication.Grpc;

/// <summary>
/// The six domain groups the 28 migrated central→site commands are partitioned
/// into — one group per <c>SiteCommandService</c> RPC.
/// </summary>
/// <remarks>
/// The partition is not cosmetic: every command inside a group shares a
/// DEADLINE class today (the <c>CommunicationOptions</c> timeout the central
/// <c>Ask</c> uses), so one RPC per group keeps the deadline decision in one
/// place on the client and one dispatch switch on the server, while the
/// <c>oneof</c> envelope keeps each command individually typed.
/// </remarks>
public enum SiteCommandGroup
{
    /// <summary>Deployment refresh, instance enable/disable/delete, deployment-state query, artifact deployment.</summary>
    Lifecycle,

    /// <summary>Interactive OPC UA / MxGateway design-time commands: browse, search, read, verify, cert trust, write tag.</summary>
    OpcUa,

    /// <summary>Read-only remote queries: site event log and debug view snapshot/subscribe/unsubscribe.</summary>
    Query,

    /// <summary>Parked store-and-forward message actions and parked cached-operation retry/discard relays.</summary>
    Parked,

    /// <summary>Inbound-API <c>Route.To()</c> relays: call, get/set attributes, wait for attribute.</summary>
    Route,

    /// <summary>Operator-initiated manual site-pair failover.</summary>
    Failover
}
