blob: 3e36a7fe462665fa405e6a7d6f8adeee3ea8d0e0 [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.inspect;
using fuchsia.diagnostics;
// The set of states that an Inspect property selector can exist in.
//
// 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 "*" characters, they must be escaped.
// If you wish to match against literal "\" characters, they must be escaped.
//
// eg: <curr_node>/abc will match any properties contained within curr_node
// with the exact name "abc".
// eg: <curr_node>/a\* will match any properties contained within curr_node
// with the exact name "a*".
// eg: <curr_node>/a\\* will match any properties contained within curr_node
// that starts with exactly "a\".
// eg: <curr_node>/a* will match any properties contained within curr_node
// that starts with "a".
// eg: <curr_node>/a*b will match any properties contained within curr_node
// that starts with a and ends with b.
// eg: <curr_node>/*b will match any properties contained within curr_node
// that ends with b.
//
// wildcard: Should only ever be true, and when set matches all properties at
// a specific node.
//
// NOTE: There is no glob option for PropertySelectors. This is intentional.
// Glob property selection behavior stems from a glob in the node-path selector
// and a wildcard in the property selector.
xunion PropertySelector {
string:1024 string_pattern;
bool wildcard;
};
/// TreeSelector represents a selection request on a nested structure where each
/// nested node has properties that can be retrieved. The node_path specifies which
/// nodes we search through, and the target_properties specify which properties to
/// look for on the matched nodes.
table TreeSelector {
// This is an optional vector providing a path from the "root" node of an
// inspect tree to the node(s) that we will query for property data.
// If absent, we assume we are querying only the properties which are direct
// children of "root".
1: vector<fuchsia.diagnostics.PathSelectionNode>:1024 node_path;
// This is the property selector that we will use to find relevent properties
// in the node(s) specified by inspect_node_path.
// This field is required.
2: PropertySelector target_properties;
};
/// Structured selector containing all required information for the
/// Inspect service to provide specific views into inspect data.
struct Selector {
fuchsia.diagnostics.ComponentSelector component_selector;
TreeSelector tree_selector;
};