blob: 9d18fdd2c9f5b6adbfbeeec121e3b1a5f2058ade [file] [log] [blame]
// Copyright 2019 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
library fuchsia.diagnostics;
enum PatternMatcher {
WILDCARD = 0;
GLOB = 1;
};
/// The set of states that a selection node can exist in. A selection-node
/// is a matcher of a container in a nested hierarchy, such as
/// a match of nested components at a location in the component hierarchy
/// or a match of nodes in an Inspect tree.
///
/// string_pattern: This is a provided string that defines a pattern to
/// match against at the current location in a nested hierarchy. The
/// parser treats wildcards (*) and backslashes (\) as special characters.
/// If you wish to match against literal wildcards, it must be escaped.
/// If you wish to match against literal backslashes, they must be escaped.
///
/// eg: <curr_node>/abc will match any node contained within curr_node
/// with the exact name "abc".
/// eg: <curr_node>/a\* will match any node contained within curr_node
/// with the exact name "a*".
/// eg: <curr_node>/a\\* will match any node contained within curr_node
/// that starts with exactly "a\".
/// eg: <curr_node>/a* will match any node contained within curr_node
/// that starts with "a".
/// eg: <curr_node>/a*b will match any node contained within curr_node
/// that starts with a and ends with b.
/// eg: <curr_node>/*b will match any node contained within curr_node
/// that ends with b.
///
/// pattern_matcher: This is either a wild-card or a glob.
///
/// wildcard: will match all nodes at the current location in the
/// component hierarchy. These PathSelectionNode types are a result of the
/// only text provided in the selector-node spot being an escaped star.
///
/// glob: will match all nodes at or below the current location in the
/// component hierarchy. These PathSelectionNode types are a result of
/// the only text provided in the selector-node spot being two escaped stars.
xunion PathSelectionNode {
string:1024 string_pattern;
PatternMatcher pattern_matcher;
};
/// ComponentSelector encodes path to a component that is being selected for.
/// The `component_moniker` specifies a pattern of component absolute monikers which
/// identify components being selected for.
table ComponentSelector {
/// Vector encoding the absolute moniker of a component being selected for.
///
/// There must be at least one path selection node provided, which
/// specifies the component names that are matched by
/// the current selector. With only the component name
/// present, we treat the `component_moniker` as selecting for all monikers
/// that end in the specified name.
1: vector<PathSelectionNode>:1024 component_moniker;
};