namespace ZB.MOM.WW.OtOpcUa.Commons.Messages.Mesh;

/// <summary>
///     Actor paths the two mesh comm actors register under. <b>These strings are the wire
///     contract</b> of the central↔node boundary.
/// </summary>
/// <remarks>
///     <para>
///         Declared once, here, rather than as literals on each side. The <c>deployments</c> /
///         <c>deployment-acks</c> topic names are declared twice — once in
///         <c>ConfigPublishCoordinator</c> and again in <c>DriverHostActor</c> — and agree only by
///         convention; renaming one would compile, deploy, and deliver nothing. A ClusterClient path
///         has the same failure mode and no compiler to catch it, so the constant is shared.
///     </para>
///     <para>
///         Nothing else pins these values, which is why <c>MeshCommActorPathTests</c> boots a real
///         host and <c>Identify</c>-probes both paths.
///     </para>
/// </remarks>
public static class MeshPaths
{
    /// <summary>Central-side comm actor — where a driver node sends its deployment acks.</summary>
    public const string CentralCommunication = "/user/central-communication";

    /// <summary>Node-side comm actor — where central sends commands.</summary>
    public const string NodeCommunication = "/user/node-communication";

    /// <summary>Actor name of <see cref="CentralCommunication"/> (the path's final segment).</summary>
    public const string CentralCommunicationName = "central-communication";

    /// <summary>Actor name of <see cref="NodeCommunication"/> (the path's final segment).</summary>
    public const string NodeCommunicationName = "node-communication";
}
