namespace MxGateway.Client; /// /// Server-side filters and shape options for /// . /// Each property maps directly to the corresponding field on the /// DiscoverHierarchyRequest proto so the gateway can narrow the /// hierarchy walk before serializing it back to the client. /// public sealed record DiscoverHierarchyOptions { /// /// Root Galaxy object id to start the walk from. When set, takes /// precedence over and . /// public int? RootGobjectId { get; init; } /// /// Root tag (assigned) name to start the walk from. Used when /// is null. /// public string? RootTagName { get; init; } /// /// Root contained-name dotted path to start the walk from. Used when /// neither nor are set. /// public string? RootContainedPath { get; init; } /// /// Maximum traversal depth below the root, inclusive. Leave null for the /// server default (unbounded). /// public int? MaxDepth { get; init; } /// /// Galaxy category ids to include. Empty means all categories. /// public IReadOnlyList CategoryIds { get; init; } = Array.Empty(); /// /// Template tag names that must appear somewhere in each returned /// object's template chain. Empty means no template filter. /// public IReadOnlyList TemplateChainContains { get; init; } = Array.Empty(); /// /// Optional glob (e.g. "Tank*") matched against each object's tag name. /// public string? TagNameGlob { get; init; } /// /// When set, overrides whether each returned GalaxyObject includes /// its dynamic attribute list. Leave null to use the server default. /// public bool? IncludeAttributes { get; init; } /// /// When true, restrict results to objects that bear at least one configured alarm. /// public bool AlarmBearingOnly { get; init; } /// /// When true, restrict results to objects that have at least one historized attribute. /// public bool HistorizedOnly { get; init; } }