| <link rel="stylesheet" href="../style.css" /> |
| |
| [TOC] |
| # fuchsia.diagnostics |
| |
| <div class="fidl-version-div"><span class="fidl-attribute fidl-version">Added: 7</span></div> |
| |
| |
| ## **PROTOCOLS** |
| |
| ## ArchiveAccessor {#ArchiveAccessor} |
| *Defined in [fuchsia.diagnostics/reader.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.diagnostics/reader.fidl;l=151)* |
| <p>Outer protocol for interacting with the different diagnostics data sources.</p> |
| |
| |
| ### StreamDiagnostics {#ArchiveAccessor.StreamDiagnostics} |
| |
| <p>Creates an iterator over diagnostics data on the system.</p> |
| <ul> |
| <li>The iterator may be finite by streaming in SNAPSHOT mode, serving only the |
| current state of diagnostics data on the system.</li> |
| <li>The iterator may be infinite by streaming in either SNAPSHOT_THEN_SUBSCRIBE |
| or SUBSCRIBE mode; the prior first provides iteration over the current state of |
| the sytem, and then both provide ongoing iteration over newly arriving diagnostics |
| data.</li> |
| </ul> |
| <ul> |
| <li> |
| <p>request <code>result stream</code> a [fuchsia.diagnostics/BatchIterator] that diagnostic |
| records are exposed to the client over.</p> |
| <ul> |
| <li>epitaphs: |
| <ul> |
| <li>INVALID_ARGS: A required argument in the StreamParameters struct was missing.</li> |
| <li>WRONG_TYPE: A selector provided by the StreamParameters struct was incorrectly |
| formatted.</li> |
| </ul> |
| </li> |
| </ul> |
| </li> |
| <li> |
| <p>request <code>stream_parameters</code> is a [fuchsia.diagnostics/StreamParameter] which |
| specifies how to configure the stream.</p> |
| </li> |
| </ul> |
| |
| |
| |
| #### Request {#ArchiveAccessor.StreamDiagnostics_Request} |
| |
| <table> |
| <tr><th>Name</th><th>Type</th></tr> |
| <tr> |
| <td><code>stream_parameters</code></td> |
| <td> |
| <code><a class='link' href='#StreamParameters'>StreamParameters</a></code> |
| </td> |
| </tr> |
| <tr> |
| <td><code>result_stream</code></td> |
| <td> |
| <code>server_end<<a class='link' href='#BatchIterator'>BatchIterator</a>></code> |
| </td> |
| </tr> |
| </table> |
| |
| |
| ## BatchIterator {#BatchIterator} |
| *Defined in [fuchsia.diagnostics/reader.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.diagnostics/reader.fidl;l=177)* |
| <p>Conceptually, a directory iterator, where each element in the iterator is a single |
| complete file that can be concatenated with other results.</p> |
| |
| |
| ### GetNext {#BatchIterator.GetNext} |
| |
| <p>Returns a vector of [fuchsia.diagnostics/FormattedContent] structs |
| with a format dictated by the format_settings argument provided to the Reader protocol |
| which spawned this BatchIterator.</p> |
| <p>An empty vector implies that the data hierarchy has been fully iterated, and subsequent |
| GetNext calls will always return the empty vector.</p> |
| <p>When the BatchIterator is serving results via subscription model, calls to GetNext will |
| hang until there is new data available, it will not return an empty vector.</p> |
| <ul> |
| <li>returns a vector of FormattedContent structs. Clients connected to a |
| Batch are expected to call GetNext() until an empty vector |
| is returned, denoting that the entire data hierarchy has been read.</li> |
| </ul> |
| <ul> |
| <li>error a [fuchsia.diagnostics/ReaderError] |
| value indicating that there was an issue reading the underlying data hierarchies |
| or formatting those hierarchies to populate the <code>batch</code>. Note, these |
| issues do not include a single component's data hierarchy failing to be read. |
| The iterator is tolerant of individual component data sources failing to be read, |
| whether that failure is a timeout or a malformed binary file. |
| In the event that a GetNext call fails, that subset of the data hierarchy results is |
| dropped, but future calls to GetNext will provide new subsets of |
| FormattedDataHierarchies.</li> |
| </ul> |
| |
| |
| |
| #### Request {#BatchIterator.GetNext_Request} |
| |
| <EMPTY> |
| |
| |
| #### Response {#BatchIterator.GetNext_Response} |
| |
| <table> |
| <tr><th>Name</th><th>Type</th></tr> |
| <tr> |
| <td><code>result</code></td> |
| <td> |
| <code><a class='link' href='#BatchIterator_GetNext_Result'>BatchIterator_GetNext_Result</a></code> |
| </td> |
| </tr> |
| </table> |
| |
| ## LogSettings {#LogSettings} |
| *Defined in [fuchsia.diagnostics/log_settings.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.diagnostics/log_settings.fidl;l=22)* |
| <p>This protocol allows clients to modify the logging behavior of components |
| in the system.</p> |
| |
| |
| ### RegisterInterest {#LogSettings.RegisterInterest} |
| |
| <p>Requests a change in interest for the matched components.</p> |
| <p>Each component holds a set of requested interests.</p> |
| <p>When a new request on LogSettings#RegisterInterest is received, |
| the sets for matched components receive the new minimum interest. |
| If the interest is less than the previous minimum interest, then a |
| <code>RegisterInterest</code> request is sent with the new minimum interest.</p> |
| <p>If a connection to <code>LogSettings</code> sends another <code>RegisterInterest</code> |
| request, its previous interest request will be undone.</p> |
| <p>When the connection to <code>LogSettings</code> is finished, the interests are |
| undone. Each matched component minimum interest is updated with the |
| new minimum interest in the set.</p> |
| |
| |
| |
| #### Request {#LogSettings.RegisterInterest_Request} |
| |
| <table> |
| <tr><th>Name</th><th>Type</th></tr> |
| <tr> |
| <td><code>selectors</code></td> |
| <td> |
| <code>vector<<a class='link' href='#LogInterestSelector'>LogInterestSelector</a>>[64]</code> |
| </td> |
| </tr> |
| </table> |
| |
| |
| |
| ## **STRUCTS** |
| |
| ### BatchIterator_GetNext_Response [resource](/fuchsia-src/reference/fidl/language/language.md#value-vs-resource){:.fidl-attribute} {#BatchIterator_GetNext_Response data-text="BatchIterator_GetNext_Response"} |
| *Defined in [fuchsia.diagnostics/reader.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.diagnostics/reader.fidl;l=202)* |
| |
| <table> |
| <tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr> |
| <tr id="BatchIterator_GetNext_Response.batch"> |
| <td><code>batch</code></td> |
| <td> |
| <code>vector<<a class='link' href='#FormattedContent'>FormattedContent</a>>[64]</code> |
| </td> |
| <td></td> |
| <td>No default</td> |
| </tr> |
| </table> |
| |
| ### LogInterestSelector {#LogInterestSelector data-text="LogInterestSelector"} |
| *Defined in [fuchsia.diagnostics/log_settings.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.diagnostics/log_settings.fidl;l=11)* |
| <p>A specified Interest coupled with its designated target,</p> |
| |
| <table> |
| <tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr> |
| <tr id="LogInterestSelector.selector"> |
| <td><code>selector</code></td> |
| <td> |
| <code><a class='link' href='#ComponentSelector'>ComponentSelector</a></code> |
| </td> |
| <td><p>Matches the components for which the interest will be requested.</p> |
| </td> |
| <td>No default</td> |
| </tr> |
| <tr id="LogInterestSelector.interest"> |
| <td><code>interest</code></td> |
| <td> |
| <code><a class='link' href='#Interest'>Interest</a></code> |
| </td> |
| <td><p>The interest level that will be sent to components matching the selector.</p> |
| </td> |
| <td>No default</td> |
| </tr> |
| </table> |
| |
| ### PropertySelector {#PropertySelector data-text="PropertySelector"} |
| *Defined in [fuchsia.diagnostics/selector.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.diagnostics/selector.fidl;l=96)* |
| <p>A selector defining a set of nodes to match, and on those matched nodes a set of named |
| properties to match.</p> |
| |
| <table> |
| <tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr> |
| <tr id="PropertySelector.node_path"> |
| <td><code>node_path</code></td> |
| <td> |
| <code>vector<<a class='link' href='#StringSelector'>StringSelector</a>>[100]</code> |
| </td> |
| <td><p>A vector of StringSelectors which serve as a pattern matcher |
| for paths through a hierarchy of named nodes. Each entry in the vector |
| is a selector for a single named node in a data hierarchy. The vector |
| of selectors for named nodes, then, defines a selector on paths through the |
| data hierarchy.</p> |
| <p>Node paths support wildcarding, which will glob a single level of a |
| node hierarchy. eg: |
| root/a/b/<em>/d |
| will match all nodes named d which are below some child of node b. |
| root/a/b/c</em> |
| will match all nodes below b which start with the character "c".</p> |
| </td> |
| <td>No default</td> |
| </tr> |
| <tr id="PropertySelector.target_properties"> |
| <td><code>target_properties</code></td> |
| <td> |
| <code><a class='link' href='#StringSelector'>StringSelector</a></code> |
| </td> |
| <td><p>A StringSelector which serves as a pattern matcher for |
| string-named properties on a node in a data hierarchy.</p> |
| <p>target_properties supports wildcarding, which will match against all properties |
| on any node matched by node_path.</p> |
| </td> |
| <td>No default</td> |
| </tr> |
| </table> |
| |
| ### SubtreeSelector {#SubtreeSelector data-text="SubtreeSelector"} |
| *Defined in [fuchsia.diagnostics/selector.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.diagnostics/selector.fidl;l=78)* |
| <p>A selector defining a set of nodes to match, for which the entire subtree including |
| those nodes are selected.</p> |
| |
| <table> |
| <tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr> |
| <tr id="SubtreeSelector.node_path"> |
| <td><code>node_path</code></td> |
| <td> |
| <code>vector<<a class='link' href='#StringSelector'>StringSelector</a>>[100]</code> |
| </td> |
| <td><p>A vector of StringSelectors which serve as a pattern matcher |
| for paths through a hierarchy of named nodes. Each entry in the vector |
| is a selector for a single named node in a data hierarchy. The vector |
| of selectors for named nodes, then, defines a selector on paths through the |
| data hierarchy.</p> |
| <p>Node paths support wildcarding, which will glob a single level of a |
| node hierarchy. eg: |
| root/a/b/<em>/d |
| will match all nodes named d which are below some child of node b. |
| root/a/b/c</em> |
| will match all nodes below b which start with the character "c".</p> |
| </td> |
| <td>No default</td> |
| </tr> |
| </table> |
| |
| |
| ## **ENUMS** |
| |
| ### DataType [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#DataType data-text="DataType"} |
| Type: <code>uint8</code> |
| |
| *Defined in [fuchsia.diagnostics/reader.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.diagnostics/reader.fidl;l=70)* |
| |
| <table> |
| <tr><th>Name</th><th>Value</th><th>Description</th></tr> |
| <tr id="DataType.INSPECT"> |
| <td><h3 id="DataType.INSPECT" class="add-link hide-from-toc">INSPECT</h3></td> |
| <td><code>1</code></td> |
| <td><p>Complete inspect hierarchies on the system.</p> |
| </td> |
| </tr> |
| <tr id="DataType.LOGS"> |
| <td><h3 id="DataType.LOGS" class="add-link hide-from-toc">LOGS</h3></td> |
| <td><code>3</code></td> |
| <td><p>Log streams on the system.</p> |
| </td> |
| </tr> |
| </table> |
| |
| ### Format [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#Format data-text="Format"} |
| Type: <code>uint32</code> |
| |
| *Defined in [fuchsia.diagnostics/format.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.diagnostics/format.fidl;l=9)* |
| <p>Enum used to specify the output format for |
| Reader results.</p> |
| |
| <table> |
| <tr><th>Name</th><th>Value</th><th>Description</th></tr> |
| <tr id="Format.JSON"> |
| <td><h3 id="Format.JSON" class="add-link hide-from-toc">JSON</h3></td> |
| <td><code>1</code></td> |
| <td><p>Dump read results per the Diagnostics Json |
| Schema specifications.</p> |
| </td> |
| </tr> |
| <tr id="Format.TEXT"> |
| <td><h3 id="Format.TEXT" class="add-link hide-from-toc">TEXT</h3></td> |
| <td><code>2</code></td> |
| <td><p>Dump read results per the Iquery text specifications.</p> |
| </td> |
| </tr> |
| </table> |
| |
| ### ReaderError [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#ReaderError data-text="ReaderError"} |
| Type: <code>uint32</code> |
| |
| *Defined in [fuchsia.diagnostics/reader.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.diagnostics/reader.fidl;l=19)* |
| <p>Enum describing the potential failure states of the streaming protocol when serving results |
| to the client over the result iterator.</p> |
| |
| <table> |
| <tr><th>Name</th><th>Value</th><th>Description</th></tr> |
| <tr id="ReaderError.IO"> |
| <td><h3 id="ReaderError.IO" class="add-link hide-from-toc">IO</h3></td> |
| <td><code>1</code></td> |
| <td></td> |
| </tr> |
| </table> |
| |
| ### Severity [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#Severity data-text="Severity"} |
| Type: <code>uint8</code> |
| |
| *Defined in [fuchsia.diagnostics/severity.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.diagnostics/severity.fidl;l=16)* |
| <p>The severity of a given record.</p> |
| |
| <table> |
| <tr><th>Name</th><th>Value</th><th>Description</th></tr> |
| <tr id="Severity.TRACE"> |
| <td><h3 id="Severity.TRACE" class="add-link hide-from-toc">TRACE</h3></td> |
| <td><code>16</code></td> |
| <td><p>Trace records include detailed information about program execution.</p> |
| </td> |
| </tr> |
| <tr id="Severity.DEBUG"> |
| <td><h3 id="Severity.DEBUG" class="add-link hide-from-toc">DEBUG</h3></td> |
| <td><code>32</code></td> |
| <td><p>Debug records include development-facing information about program execution.</p> |
| </td> |
| </tr> |
| <tr id="Severity.INFO"> |
| <td><h3 id="Severity.INFO" class="add-link hide-from-toc">INFO</h3></td> |
| <td><code>48</code></td> |
| <td><p>Info records include general information about program execution. (default)</p> |
| </td> |
| </tr> |
| <tr id="Severity.WARN"> |
| <td><h3 id="Severity.WARN" class="add-link hide-from-toc">WARN</h3></td> |
| <td><code>64</code></td> |
| <td><p>Warning records include information about potentially problematic operations.</p> |
| </td> |
| </tr> |
| <tr id="Severity.ERROR"> |
| <td><h3 id="Severity.ERROR" class="add-link hide-from-toc">ERROR</h3></td> |
| <td><code>80</code></td> |
| <td><p>Error records include information about failed operations.</p> |
| </td> |
| </tr> |
| <tr id="Severity.FATAL"> |
| <td><h3 id="Severity.FATAL" class="add-link hide-from-toc">FATAL</h3></td> |
| <td><code>96</code></td> |
| <td><p>Fatal records convey information about operations which cause a program's termination.</p> |
| </td> |
| </tr> |
| </table> |
| |
| ### StreamMode [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#StreamMode data-text="StreamMode"} |
| Type: <code>uint8</code> |
| |
| *Defined in [fuchsia.diagnostics/reader.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.diagnostics/reader.fidl;l=55)* |
| <p>Enum specifying the modes by which a user can connect to and stream diagnostics metrics.</p> |
| |
| <table> |
| <tr><th>Name</th><th>Value</th><th>Description</th></tr> |
| <tr id="StreamMode.SNAPSHOT"> |
| <td><h3 id="StreamMode.SNAPSHOT" class="add-link hide-from-toc">SNAPSHOT</h3></td> |
| <td><code>1</code></td> |
| <td><p>The stream will serve a snapshot of the diagnostics data at the time of |
| connection, then end.</p> |
| </td> |
| </tr> |
| <tr id="StreamMode.SNAPSHOT_THEN_SUBSCRIBE"> |
| <td><h3 id="StreamMode.SNAPSHOT_THEN_SUBSCRIBE" class="add-link hide-from-toc">SNAPSHOT_THEN_SUBSCRIBE</h3></td> |
| <td><code>2</code></td> |
| <td><p>The stream will serve a snapshot of the diagnostics data at the time of |
| connection, then subsequent calls to the stream will hang until |
| new diagnostics data is available.</p> |
| </td> |
| </tr> |
| <tr id="StreamMode.SUBSCRIBE"> |
| <td><h3 id="StreamMode.SUBSCRIBE" class="add-link hide-from-toc">SUBSCRIBE</h3></td> |
| <td><code>3</code></td> |
| <td><p>Calls to the stream will hang until new diagnostics data is available. Between calls to |
| the stream, newly arrived data is buffered.</p> |
| </td> |
| </tr> |
| </table> |
| |
| |
| ## **TABLES** |
| |
| ### ComponentSelector {#ComponentSelector data-text="ComponentSelector"} |
| |
| |
| *Defined in [fuchsia.diagnostics/selector.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.diagnostics/selector.fidl;l=65)* |
| <p>Specifies a pattern of component relative monikers which |
| identify components being selected for.</p> |
| <p>Component selectors support wildcarding, which will glob a single "level" of a |
| component moniker. eg: |
| core/*/echo |
| will match all echo instances running only in realms directly under core, but none |
| nested further.</p> |
| <p>Component selectors also support a recursive wildcard, which will glob multiple |
| "levels" of a component moniker. eg: |
| core/** |
| will match all component instances running under core/ and all descendants of it. |
| Note that the wildcard does not select core itself. Clients that wish to choose a |
| subtree including the root should pass two selectors, eg: |
| core |
| core/** |
| The recursive wildcard is only allowed as the final segment of the selector.</p> |
| |
| <table> |
| <tr><th>Ordinal</th><th>Field</th><th>Type</th><th>Description</th></tr> |
| <tr id="ComponentSelector.moniker_segments"> |
| <td><h3 id="ComponentSelector.moniker_segments" class="add-link hide-from-toc">1</h3></td> |
| <td><code>moniker_segments</code></td> |
| <td> |
| <code>vector<<a class='link' href='#StringSelector'>StringSelector</a>>[25]</code> |
| </td> |
| <td><p>Vector encoding the a pattern for monikers of components being selected for. |
| These monikers are child-monikers relative to a "root" hierarchy that the archivist |
| is aware of.</p> |
| <p>There must be at least one StringSelector provided, which |
| specifies the component names that are matched by |
| the current selector.</p> |
| </td> |
| </tr> |
| </table> |
| |
| ### Interest {#Interest data-text="Interest"} |
| |
| |
| *Defined in [fuchsia.diagnostics/interest.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.diagnostics/interest.fidl;l=8)* |
| <p>Interest expresses the scope of clients' desired diagnostics data, |
| e.g. for filtering messages or controlling their generation.</p> |
| |
| <table> |
| <tr><th>Ordinal</th><th>Field</th><th>Type</th><th>Description</th></tr> |
| <tr id="Interest.min_severity"> |
| <td><h3 id="Interest.min_severity" class="add-link hide-from-toc">1</h3></td> |
| <td><code>min_severity</code></td> |
| <td> |
| <code><a class='link' href='#Severity'>Severity</a></code> |
| </td> |
| <td><p>Minimum desired severity. Components should include records at or |
| above this severity.</p> |
| <p>If not present, interpreted as Severity.INFO.</p> |
| </td> |
| </tr> |
| </table> |
| |
| ### PerformanceConfiguration {#PerformanceConfiguration data-text="PerformanceConfiguration"} |
| |
| |
| *Defined in [fuchsia.diagnostics/reader.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.diagnostics/reader.fidl;l=92)* |
| <p>Parameters which configure a diagnostics stream's performance properties.</p> |
| |
| <table> |
| <tr><th>Ordinal</th><th>Field</th><th>Type</th><th>Description</th></tr> |
| <tr id="PerformanceConfiguration.max_aggregate_content_size_bytes"> |
| <td><h3 id="PerformanceConfiguration.max_aggregate_content_size_bytes" class="add-link hide-from-toc">1</h3></td> |
| <td><code>max_aggregate_content_size_bytes</code></td> |
| <td> |
| <code>uint64</code> |
| </td> |
| <td><p>Maximum aggregate size of all formatted contents returned by |
| the batch iterator for a diagnostics stream. If this value is set for a stream |
| configured in subscribe mode, the stream will terminate when the max size has |
| been reached. |
| NOTE: OPTIONAL</p> |
| </td> |
| </tr> |
| <tr id="PerformanceConfiguration.batch_retrieval_timeout_seconds"> |
| <td><h3 id="PerformanceConfiguration.batch_retrieval_timeout_seconds" class="add-link hide-from-toc">2</h3></td> |
| <td><code>batch_retrieval_timeout_seconds</code></td> |
| <td> |
| <code>int64</code> |
| </td> |
| <td><p>Configuration specifying max number of seconds to wait for a single |
| component to have its diagnostics data "pumped". This value can used |
| for testing or if you know the component you are interested is in under |
| heavy load. |
| If not provided, then PER_COMPONENT_ASYNC_TIMEOUT_SECONDS as defined in |
| https://fuchsia.googlesource.com/fuchsia/+/refs/heads/master/src/diagnostics/archivist/src/constants.rs |
| will be used. |
| NOTE: OPTIONAL</p> |
| </td> |
| </tr> |
| </table> |
| |
| ### Selector {#Selector data-text="Selector"} |
| |
| |
| *Defined in [fuchsia.diagnostics/selector.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.diagnostics/selector.fidl;l=144)* |
| <p>Structured selector containing all required information for pattern-matching onto |
| string-named properties owned by nodes in a data hierarchy, where data hierarchies belong |
| to specific components.</p> |
| <p>These selectors are represented in text form as three segments, colon delimited, |
| specifying: |
| <component_moniker>:<node_selector>:<property_selector> |
| Examples: |
| Property selection: |
| realm1/realm2/echo.cmx:root/active_users:user_count</p> |
| <pre><code>Subtree selection: |
| realm1/realm2/echo.cmx:root/active_users |
| </code></pre> |
| |
| <table> |
| <tr><th>Ordinal</th><th>Field</th><th>Type</th><th>Description</th></tr> |
| <tr id="Selector.component_selector"> |
| <td><h3 id="Selector.component_selector" class="add-link hide-from-toc">1</h3></td> |
| <td><code>component_selector</code></td> |
| <td> |
| <code><a class='link' href='#ComponentSelector'>ComponentSelector</a></code> |
| </td> |
| <td><p>The selector defining a pattern of component monikers to match |
| against.</p> |
| </td> |
| </tr> |
| <tr id="Selector.tree_selector"> |
| <td><h3 id="Selector.tree_selector" class="add-link hide-from-toc">2</h3></td> |
| <td><code>tree_selector</code></td> |
| <td> |
| <code><a class='link' href='#TreeSelector'>TreeSelector</a></code> |
| </td> |
| <td><p>The selector defining data hierarchy properties to match against |
| within the data hierarchies owned by components matched by |
| <code>component_selector</code>.</p> |
| </td> |
| </tr> |
| </table> |
| |
| ### StreamParameters {#StreamParameters data-text="StreamParameters"} |
| |
| |
| *Defined in [fuchsia.diagnostics/reader.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.diagnostics/reader.fidl;l=112)* |
| <p>Parameters needed to configure a stream of diagnostics information.</p> |
| |
| <table> |
| <tr><th>Ordinal</th><th>Field</th><th>Type</th><th>Description</th></tr> |
| <tr id="StreamParameters.data_type"> |
| <td><h3 id="StreamParameters.data_type" class="add-link hide-from-toc">1</h3></td> |
| <td><code>data_type</code></td> |
| <td> |
| <code><a class='link' href='#DataType'>DataType</a></code> |
| </td> |
| <td><p>A [fuchsia.diagnostics/DataType] that specifies the diagnostics data type |
| to stream to the client. |
| NOTE: REQUIRED</p> |
| </td> |
| </tr> |
| <tr id="StreamParameters.stream_mode"> |
| <td><h3 id="StreamParameters.stream_mode" class="add-link hide-from-toc">2</h3></td> |
| <td><code>stream_mode</code></td> |
| <td> |
| <code><a class='link' href='#StreamMode'>StreamMode</a></code> |
| </td> |
| <td><p>A [fuchsia.diagnostics/StreamMode] that specifies how the |
| streaming server provides streamed results. |
| NOTE: REQUIRED</p> |
| </td> |
| </tr> |
| <tr id="StreamParameters.format"> |
| <td><h3 id="StreamParameters.format" class="add-link hide-from-toc">3</h3></td> |
| <td><code>format</code></td> |
| <td> |
| <code><a class='link' href='#Format'>Format</a></code> |
| </td> |
| <td><p>A [fuchsia.diagnostics/Format] that specifies how to format the returned |
| diagnostics data. |
| NOTE: REQUIRED</p> |
| </td> |
| </tr> |
| <tr id="StreamParameters.client_selector_configuration"> |
| <td><h3 id="StreamParameters.client_selector_configuration" class="add-link hide-from-toc">4</h3></td> |
| <td><code>client_selector_configuration</code></td> |
| <td> |
| <code><a class='link' href='#ClientSelectorConfiguration'>ClientSelectorConfiguration</a></code> |
| </td> |
| <td><p>Configuration specifying what results the client wants returned from their |
| connection. The client can request a specific subset of data using a vector |
| of provided selectors, or can specify that they want all available data. |
| NOTE: REQUIRED</p> |
| </td> |
| </tr> |
| <tr id="StreamParameters.batch_retrieval_timeout_seconds"> |
| <td><h3 id="StreamParameters.batch_retrieval_timeout_seconds" class="add-link hide-from-toc">5</h3></td> |
| <td><code>batch_retrieval_timeout_seconds</code></td> |
| <td> |
| <code>int64</code> |
| </td> |
| <td><p>Configuration specifying max number of seconds to wait for a single |
| component to have its diagnostics data "pumped". This value can used |
| for testing or if you know the component you are interested is in under |
| heavy load. |
| If not provided, then PER_COMPONENT_ASYNC_TIMEOUT_SECONDS as defined in |
| https://fuchsia.googlesource.com/fuchsia/+/refs/heads/master/src/diagnostics/archivist/src/constants.rs |
| will be used. |
| NOTE: OPTIONAL</p> |
| </td> |
| </tr> |
| <tr id="StreamParameters.performance_configuration"> |
| <td><h3 id="StreamParameters.performance_configuration" class="add-link hide-from-toc">6</h3></td> |
| <td><code>performance_configuration</code></td> |
| <td> |
| <code><a class='link' href='#PerformanceConfiguration'>PerformanceConfiguration</a></code> |
| </td> |
| <td><p>Parameters which configure a diagnostics stream's performance properties. |
| NOTE: OPTIONAL</p> |
| </td> |
| </tr> |
| </table> |
| |
| |
| ## **UNIONS** |
| |
| ### BatchIterator_GetNext_Result [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} [resource](/fuchsia-src/reference/fidl/language/language.md#value-vs-resource){:.fidl-attribute} {#BatchIterator_GetNext_Result data-text="BatchIterator_GetNext_Result"} |
| *Defined in [fuchsia.diagnostics/reader.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.diagnostics/reader.fidl;l=202)* |
| <table> |
| <tr><th>Ordinal</th><th>Variant</th><th>Type</th><th>Description</th></tr> |
| <tr id="BatchIterator_GetNext_Result.response"> |
| <td><h3 id="BatchIterator_GetNext_Result.response" class="add-link hide-from-toc">1</h3></td> |
| <td><code>response</code></td> |
| <td> |
| <code><a class='link' href='#BatchIterator_GetNext_Response'>BatchIterator_GetNext_Response</a></code> |
| </td> |
| <td></td> |
| </tr> |
| <tr id="BatchIterator_GetNext_Result.err"> |
| <td><h3 id="BatchIterator_GetNext_Result.err" class="add-link hide-from-toc">2</h3></td> |
| <td><code>err</code></td> |
| <td> |
| <code><a class='link' href='#ReaderError'>ReaderError</a></code> |
| </td> |
| <td></td> |
| </tr> |
| </table> |
| |
| ### ClientSelectorConfiguration [flexible](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#ClientSelectorConfiguration data-text="ClientSelectorConfiguration"} |
| *Defined in [fuchsia.diagnostics/reader.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.diagnostics/reader.fidl;l=80)* |
| <table> |
| <tr><th>Ordinal</th><th>Variant</th><th>Type</th><th>Description</th></tr> |
| <tr id="ClientSelectorConfiguration.selectors"> |
| <td><h3 id="ClientSelectorConfiguration.selectors" class="add-link hide-from-toc">1</h3></td> |
| <td><code>selectors</code></td> |
| <td> |
| <code>vector<<a class='link' href='#SelectorArgument'>SelectorArgument</a>></code> |
| </td> |
| <td><p>A vector of [fuchsia.diagnostics/SelectorArgument] which |
| provide additional filters to scope data streams with. An empty vector is considered |
| a misconfiguration and will result in an epitaph signaling incorrect parameters.</p> |
| </td> |
| </tr> |
| <tr id="ClientSelectorConfiguration.select_all"> |
| <td><h3 id="ClientSelectorConfiguration.select_all" class="add-link hide-from-toc">2</h3></td> |
| <td><code>select_all</code></td> |
| <td> |
| <code>bool</code> |
| </td> |
| <td><p>select_all must be true if set, and specifies that the client wants to retrieve |
| all data that their connection is able to expose.</p> |
| </td> |
| </tr> |
| </table> |
| |
| ### FormattedContent [flexible](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} [resource](/fuchsia-src/reference/fidl/language/language.md#value-vs-resource){:.fidl-attribute} {#FormattedContent data-text="FormattedContent"} |
| *Defined in [fuchsia.diagnostics/reader.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.diagnostics/reader.fidl;l=43)* |
| <p>A fidl union containing a complete hierarchy of structured diagnostics |
| data, such that the content can be parsed into a file by itself.</p> |
| <table> |
| <tr><th>Ordinal</th><th>Variant</th><th>Type</th><th>Description</th></tr> |
| <tr id="FormattedContent.json"> |
| <td><h3 id="FormattedContent.json" class="add-link hide-from-toc">1</h3></td> |
| <td><code>json</code></td> |
| <td> |
| <code><a class='link' href='../fuchsia.mem/'>fuchsia.mem</a>/<a class='link' href='../fuchsia.mem/#Buffer'>Buffer</a></code> |
| </td> |
| <td><p>A diagnostics schema encoded as json. |
| The VMO will contain up to 1mb of diagnostics data.</p> |
| </td> |
| </tr> |
| <tr id="FormattedContent.text"> |
| <td><h3 id="FormattedContent.text" class="add-link hide-from-toc">2</h3></td> |
| <td><code>text</code></td> |
| <td> |
| <code><a class='link' href='../fuchsia.mem/'>fuchsia.mem</a>/<a class='link' href='../fuchsia.mem/#Buffer'>Buffer</a></code> |
| </td> |
| <td><p>A diagnostics schema encoded as text. |
| The VMO will contain up to 1mb of diagnostics data.</p> |
| </td> |
| </tr> |
| </table> |
| |
| ### SelectorArgument [flexible](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#SelectorArgument data-text="SelectorArgument"} |
| *Defined in [fuchsia.diagnostics/reader.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.diagnostics/reader.fidl;l=27)* |
| <p>Argument used for Archive selectors, can be either the pre-parsed |
| fidl struct or string representation.</p> |
| <table> |
| <tr><th>Ordinal</th><th>Variant</th><th>Type</th><th>Description</th></tr> |
| <tr id="SelectorArgument.structured_selector"> |
| <td><h3 id="SelectorArgument.structured_selector" class="add-link hide-from-toc">1</h3></td> |
| <td><code>structured_selector</code></td> |
| <td> |
| <code><a class='link' href='#Selector'>Selector</a></code> |
| </td> |
| <td><p>A Selector defining a pattern-matcher which selects for components within a hierarchy |
| and properties in a data hierarchy namespaced by component.</p> |
| </td> |
| </tr> |
| <tr id="SelectorArgument.raw_selector"> |
| <td><h3 id="SelectorArgument.raw_selector" class="add-link hide-from-toc">2</h3></td> |
| <td><code>raw_selector</code></td> |
| <td> |
| <code>string[1024]</code> |
| </td> |
| <td><p>A raw string representing a [fuchsia.diagnostics/Selector]. |
| The Selector defines a pattern-matcher which selects for components within a hierarchy |
| and properties in a data hierarchy namespaced by component. |
| NOTE: All StringSelectors parsed from the raw_selector will be interpreted in |
| string_pattern mode, giving significance to special characters. |
| See https://fuchsia.dev/fuchsia-src/reference/diagnostics/selectors for more information</p> |
| </td> |
| </tr> |
| </table> |
| |
| ### StringSelector [flexible](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#StringSelector data-text="StringSelector"} |
| *Defined in [fuchsia.diagnostics/selector.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.diagnostics/selector.fidl;l=20)* |
| <p>StringSelector is an union defining different ways to describe a pattern to match |
| strings against.</p> |
| <table> |
| <tr><th>Ordinal</th><th>Variant</th><th>Type</th><th>Description</th></tr> |
| <tr id="StringSelector.string_pattern"> |
| <td><h3 id="StringSelector.string_pattern" class="add-link hide-from-toc">1</h3></td> |
| <td><code>string_pattern</code></td> |
| <td> |
| <code>string[100]</code> |
| </td> |
| <td><p>This is a provided string that defines a pattern to |
| match against. The parser treats asterisks (*), colons (:) and backslashes |
| () as special characters.</p> |
| <p>If you wish to match against literal asterisks (*), they must be escaped. |
| If you wish to match against literal backslashes (), they must be escaped. |
| If you wish to match against literal colons (:), they must be escaped.</p> |
| <p>eg: abc will match any string with the exact name "abc". |
| eg: a* will match any string with the exact name "a*". |
| eg: a\* will match any that starts with exactly "a". |
| eg: a* will match any string that starts with "a". |
| eg: a<em>b will match any string that starts with a and ends with b. |
| eg: a</em>b*c will match any string that starts with a and ends with c, with <code>b</code> |
| in the middle.</p> |
| <p>In addition, the "**" literal is treated as a special sequence that may match |
| multiple levels in a component selector only. See |ComponentSelector| for |
| details.</p> |
| </td> |
| </tr> |
| <tr id="StringSelector.exact_match"> |
| <td><h3 id="StringSelector.exact_match" class="add-link hide-from-toc">2</h3></td> |
| <td><code>exact_match</code></td> |
| <td> |
| <code>string[100]</code> |
| </td> |
| <td><p>This is a provided string that defines an exact string to match against. No |
| characters are treated as special, or carry special syntax.</p> |
| </td> |
| </tr> |
| </table> |
| |
| ### TreeSelector [flexible](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#TreeSelector data-text="TreeSelector"} |
| *Defined in [fuchsia.diagnostics/selector.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.diagnostics/selector.fidl;l=121)* |
| <p>TreeSelector represents a selection request on a hierarchy of named nodes, with |
| named properties on those nodes.</p> |
| <table> |
| <tr><th>Ordinal</th><th>Variant</th><th>Type</th><th>Description</th></tr> |
| <tr id="TreeSelector.subtree_selector"> |
| <td><h3 id="TreeSelector.subtree_selector" class="add-link hide-from-toc">1</h3></td> |
| <td><code>subtree_selector</code></td> |
| <td> |
| <code><a class='link' href='#SubtreeSelector'>SubtreeSelector</a></code> |
| </td> |
| <td><p>A selector defining a set of nodes to match, for which the entire subtree including |
| those nodes are selected.</p> |
| </td> |
| </tr> |
| <tr id="TreeSelector.property_selector"> |
| <td><h3 id="TreeSelector.property_selector" class="add-link hide-from-toc">2</h3></td> |
| <td><code>property_selector</code></td> |
| <td> |
| <code><a class='link' href='#PropertySelector'>PropertySelector</a></code> |
| </td> |
| <td><p>A selector defining a set of nodes to match, and on those matched nodes a set of named |
| propperties to match.</p> |
| </td> |
| </tr> |
| </table> |
| |
| |
| |
| ## **CONSTANTS** |
| |
| <table> |
| <tr><th>Name</th><th>Value</th><th>Type</th><th>Description</th></tr> |
| <tr id="MAXIMUM_ENTRIES_PER_BATCH"> |
| <td><a href="https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.diagnostics/reader.fidl;l=14">MAXIMUM_ENTRIES_PER_BATCH</a></td> |
| <td> |
| <code>64</code> |
| </td> |
| <td><code>uint16</code></td> |
| <td><p>The size 64 was chosen because entries in batches are handles to |
| VMOs and there is a limit of 64 handles per fidl message.</p> |
| </td> |
| </tr> |
| <tr id="MAXIMUM_RAW_SELECTOR_LENGTH"> |
| <td><a href="https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.diagnostics/reader.fidl;l=10">MAXIMUM_RAW_SELECTOR_LENGTH</a></td> |
| <td> |
| <code>1024</code> |
| </td> |
| <td><code>uint16</code></td> |
| <td><p>The size bound of 1024 is a reasonably low size restriction that meets most |
| canonical selectors we've ecountered.</p> |
| </td> |
| </tr> |
| <tr id="MAX_DATA_HIERARCHY_DEPTH"> |
| <td><a href="https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.diagnostics/selector.fidl;l=16">MAX_DATA_HIERARCHY_DEPTH</a></td> |
| <td> |
| <code>100</code> |
| </td> |
| <td><code>uint16</code></td> |
| <td></td> |
| </tr> |
| <tr id="MAX_LOG_SELECTORS"> |
| <td><a href="https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.diagnostics/log_settings.fidl;l=8">MAX_LOG_SELECTORS</a></td> |
| <td> |
| <code>64</code> |
| </td> |
| <td><code>uint8</code></td> |
| <td><p>Max number of LogInterestSelectors that can be specified via a listener.</p> |
| </td> |
| </tr> |
| <tr id="MAX_MONIKER_SEGMENTS"> |
| <td><a href="https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.diagnostics/selector.fidl;l=12">MAX_MONIKER_SEGMENTS</a></td> |
| <td> |
| <code>25</code> |
| </td> |
| <td><code>uint16</code></td> |
| <td></td> |
| </tr> |
| <tr id="MAX_STRING_SELECTOR_LENGTH"> |
| <td><a href="https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.diagnostics/selector.fidl;l=8">MAX_STRING_SELECTOR_LENGTH</a></td> |
| <td> |
| <code>100</code> |
| </td> |
| <td><code>uint16</code></td> |
| <td></td> |
| </tr> |
| </table> |