namespace ZB.MOM.WW.ScadaBridge.Host;
public class NodeOptions
{
/// Gets or sets the node role (e.g. Central or Site).
public string Role { get; set; } = string.Empty;
/// Gets or sets the hostname or IP address this node advertises to the Akka cluster.
public string NodeHostname { get; set; } = string.Empty;
///
/// Operator-configured semantic node name used to stamp the SourceNode
/// column on audit rows. Conventional values are node-a/node-b
/// on site nodes and central-a/central-b on central nodes,
/// but the value is a free-form label — no validation is enforced.
///
public string NodeName { get; set; } = string.Empty;
/// Gets or sets the site identifier for site nodes; null for central nodes.
public string? SiteId { get; set; }
/// Gets or sets the Akka.NET remoting port for cluster communication.
public int RemotingPort { get; set; } = 8081;
/// Gets or sets the gRPC port for the site stream server.
public int GrpcPort { get; set; } = 8083;
///
/// HTTP/2 (h2c) port the CENTRAL node listens on for the site→central
/// CentralControlService gRPC control plane. Default 8083 — deliberately symmetric
/// with the site , since a node is either central or a site and the
/// two never share a process. This listener is distinct from central's :5000 HTTP/1
/// surface (Central UI, Management/Inbound API), which stays exactly as-is: gRPC does NOT go
/// through Traefik (HTTP/1 only). Ignored on site nodes.
///
public int CentralGrpcPort { get; set; } = 8083;
///
/// HTTP/1.1 port serving the Prometheus /metrics scrape endpoint on site nodes.
/// Defaults to 8084 — deliberately distinct from (8082)
/// and (8083) so the Kestrel metrics listener never contends
/// with the Akka remoting port a site node binds.
///
public int MetricsPort { get; set; } = 8084;
}