using ZB.MOM.WW.OtOpcUa.Commons.Types; namespace ZB.MOM.WW.OtOpcUa.Commons.Interfaces; /// /// Live view of the local node's identity and the cluster's role topology. Implemented by /// ClusterRoleInfo in OtOpcUa.Cluster; consumed by everything that needs to /// distinguish admin-role vs driver-role members or react to role-leader changes (e.g. OPC UA /// ServiceLevel computation). /// public interface IClusterRoleInfo { /// Gets the local cluster node identifier. NodeId LocalNode { get; } /// Gets the set of roles assigned to the local node. IReadOnlySet LocalRoles { get; } /// Checks if the local node has the specified role. /// Role name to check. /// True if the local node has the role; otherwise, false. bool HasRole(string role); /// Gets all nodes assigned to the specified role. /// Role name to query. /// List of node identifiers with the role. IReadOnlyList MembersWithRole(string role); /// Gets the leader node for the specified role, or null if no leader is elected. /// Role name to query. /// The leader node identifier, or null if no leader exists. NodeId? RoleLeader(string role); /// Occurs when the leader of a role changes. event EventHandler? RoleLeaderChanged; }