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; }