blob: 6c5b1be56ab42c991b42cdd876c1555d283de27a [file] [log] [blame] [view]
<link rel="stylesheet" href="../style.css" />
[TOC]
# fuchsia.component
<div class="fidl-version-div"><span class="fidl-attribute fidl-version">Added: 7</span></div>
## **PROTOCOLS**
## Binder {#Binder}
*Defined in [fuchsia.component/binder.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.component/binder.fidl;l=20)*
<p>A framework-provided protocol that allows components that use it to bind to
the component that exposes it. The act of connecting to this protocol will
trigger the bind. Thus, this protocol contains no methods. For more details
on binding, see
https://fuchsia.dev/fuchsia-src/concepts/components/v2/lifecycle#binding.</p>
<p>When a component connects to protocol, the component exposing this capability
will be started if it's not already running. Upon a failure to start, the
component framework will close the server end of the channel with a
zx.status epitaph.</p>
<p>Note: The component doesn't need to serve this protocol, it is implemented
by the framework.</p>
## ChildIterator {#ChildIterator}
*Defined in [fuchsia.component/realm.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.component/realm.fidl;l=147)*
<p>A protocol to iterate over the list of children in a realm.</p>
### Next {#ChildIterator.Next}
<p>Advance the iterator and return the next batch of children.</p>
<p>Returns a vector of <code>ChildRef</code>. Returns an empty vector when there are
no more children.</p>
#### Request {#ChildIterator.Next_Request}
&lt;EMPTY&gt;
#### Response {#ChildIterator.Next_Response}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>children</code></td>
<td>
<code>vector&lt;<a class='link' href='../fuchsia.component.decl/'>fuchsia.component.decl</a>/<a class='link' href='../fuchsia.component.decl/#ChildRef'>ChildRef</a>&gt;[128]</code>
</td>
</tr>
</table>
## Realm {#Realm}
*Defined in [fuchsia.component/realm.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.component/realm.fidl;l=33)*
<p>A protocol used by a component instance to manage its own realm, such as for
binding to its children.</p>
<p>Requests to this protocol are processed in the order they are received.
Clients that wish to send requests in parallel should open multiple
connections.</p>
<p>The component framework provides this service to components that use
<code>fuchsia.component.Realm</code>.</p>
### CreateChild {#Realm.CreateChild}
<p>Creates a child component instance dynamically. When this function
returns successfully, the instance exists, but it may not be running.</p>
<p>The environment of the child instance is determined by the environment
of the collection. <code>decl</code> must not set <code>environment</code>.</p>
<p>Errors:</p>
<ul>
<li><code>INVALID_ARGUMENTS</code>: <code>collection</code> is not a valid reference or <code>child</code>
is not a valid declaration.</li>
<li><code>COLLECTION_NOT_FOUND</code>: <code>collection</code> does not exist.</li>
<li><code>INSTANCE_ALREADY_EXISTS</code>: <code>decl.name</code> already exists in <code>collection</code>.</li>
<li><code>INSTANCE_CANNOT_RESOLVE</code>: <code>child</code>'s component declaration failed to resolve
in a <code>SingleRun</code> collection.</li>
<li><code>NO_SPACE</code>: Could not allocate storage for the new instance.</li>
<li><code>INSTANCE_DIED</code>: This realm no longer exists.</li>
</ul>
#### Request {#Realm.CreateChild_Request}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>collection</code></td>
<td>
<code><a class='link' href='../fuchsia.component.decl/'>fuchsia.component.decl</a>/<a class='link' href='../fuchsia.component.decl/#CollectionRef'>CollectionRef</a></code>
</td>
</tr>
<tr>
<td><code>decl</code></td>
<td>
<code><a class='link' href='../fuchsia.component.decl/'>fuchsia.component.decl</a>/<a class='link' href='../fuchsia.component.decl/#Child'>Child</a></code>
</td>
</tr>
<tr>
<td><code>args</code></td>
<td>
<code><a class='link' href='#CreateChildArgs'>CreateChildArgs</a></code>
</td>
</tr>
</table>
#### Response {#Realm.CreateChild_Response}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>result</code></td>
<td>
<code><a class='link' href='#Realm_CreateChild_Result'>Realm_CreateChild_Result</a></code>
</td>
</tr>
</table>
### DestroyChild {#Realm.DestroyChild}
<p>Destroys a dynamically-created component instance. When this function
returns, the instance is destroyed and has stopped running. However,
cleanup of the component's resources (such as its isolated storage) may
happen in the background after this function returns.</p>
<p>Errors:</p>
<ul>
<li><code>INVALID_ARGUMENTS</code>: <code>child</code> is not a valid reference or does not refer
to a dynamic instance.</li>
<li><code>INSTANCE_NOT_FOUND</code>: <code>child</code> does not exist.</li>
<li><code>COLLECTION_NOT_FOUND</code>: <code>collection</code> does not exist.</li>
<li><code>INSTANCE_DIED</code>: This realm no longer exists.</li>
</ul>
#### Request {#Realm.DestroyChild_Request}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>child</code></td>
<td>
<code><a class='link' href='../fuchsia.component.decl/'>fuchsia.component.decl</a>/<a class='link' href='../fuchsia.component.decl/#ChildRef'>ChildRef</a></code>
</td>
</tr>
</table>
#### Response {#Realm.DestroyChild_Response}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>result</code></td>
<td>
<code><a class='link' href='#Realm_DestroyChild_Result'>Realm_DestroyChild_Result</a></code>
</td>
</tr>
</table>
### ListChildren {#Realm.ListChildren}
<p>Returns an iterator that lists all instances in a collection.</p>
<p>NOTE: The results are not guaranteed to be consistent. Instances may be
created or destroyed while the iterator is live, but those changes
won't be observed by the iterator after this method returns.</p>
<p>Errors:</p>
<ul>
<li><code>INVALID_ARGUMENTS</code>: <code>collection</code> is not a valid reference or <code>iter</code>
does not have <code>ZX_RIGHT_WAIT</code>.</li>
<li><code>COLLECTION_NOT_FOUND</code>: <code>collection</code> does not exist.</li>
<li><code>INSTANCE_DIED</code>: This realm no longer exists.</li>
<li>If <code>iter</code> does not have standard channel rights, this function may
return <code>ACCESS_DENIED</code> or component manager may close <code>iter</code>.</li>
</ul>
#### Request {#Realm.ListChildren_Request}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>collection</code></td>
<td>
<code><a class='link' href='../fuchsia.component.decl/'>fuchsia.component.decl</a>/<a class='link' href='../fuchsia.component.decl/#CollectionRef'>CollectionRef</a></code>
</td>
</tr>
<tr>
<td><code>iter</code></td>
<td>
<code>server_end&lt;<a class='link' href='#ChildIterator'>ChildIterator</a>&gt;</code>
</td>
</tr>
</table>
#### Response {#Realm.ListChildren_Response}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>result</code></td>
<td>
<code><a class='link' href='#Realm_ListChildren_Result'>Realm_ListChildren_Result</a></code>
</td>
</tr>
</table>
### OpenExposedDir {#Realm.OpenExposedDir}
<p>Opens the exposed directory of a child component instance. When this
function successfully returns, <code>exposed_dir</code> is bound to a directory
that contains the capabilities which the child exposed to its realm
via <code>ComponentDecl.exposes</code> (specified via &quot;expose&quot; declarations in
the component's manifest). The child component will not start as a
result of this call. Instead, starting will occur iff the parent binds
to one of the capabilities contained within <code>exposed_dir</code>.</p>
<p><code>exposed_dir</code> is open as long as <code>child</code> exists.</p>
<p>Errors:</p>
<ul>
<li><code>INVALID_ARGUMENTS</code>: <code>child</code> is not a valid child reference.</li>
<li><code>INSTANCE_NOT_FOUND</code>: <code>child</code> does not exist.</li>
<li><code>INSTANCE_CANNOT_RESOLVE</code>: <code>child</code>'s component declaration failed to resolve.</li>
<li><code>INSTANCE_DIED</code>: This realm no longer exists.</li>
</ul>
#### Request {#Realm.OpenExposedDir_Request}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>child</code></td>
<td>
<code><a class='link' href='../fuchsia.component.decl/'>fuchsia.component.decl</a>/<a class='link' href='../fuchsia.component.decl/#ChildRef'>ChildRef</a></code>
</td>
</tr>
<tr>
<td><code>exposed_dir</code></td>
<td>
<code>server_end&lt;<a class='link' href='../fuchsia.io/'>fuchsia.io</a>/<a class='link' href='../fuchsia.io/#Directory'>Directory</a>&gt;</code>
</td>
</tr>
</table>
#### Response {#Realm.OpenExposedDir_Response}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>result</code></td>
<td>
<code><a class='link' href='#Realm_OpenExposedDir_Result'>Realm_OpenExposedDir_Result</a></code>
</td>
</tr>
</table>
## **STRUCTS**
### Realm_CreateChild_Response {#Realm_CreateChild_Response data-text="Realm_CreateChild_Response"}
*Defined in [fuchsia.component/realm.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.component/realm.fidl;l=73)*
&lt;EMPTY&gt;
### Realm_DestroyChild_Response {#Realm_DestroyChild_Response data-text="Realm_DestroyChild_Response"}
*Defined in [fuchsia.component/realm.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.component/realm.fidl;l=88)*
&lt;EMPTY&gt;
### Realm_ListChildren_Response {#Realm_ListChildren_Response data-text="Realm_ListChildren_Response"}
*Defined in [fuchsia.component/realm.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.component/realm.fidl;l=106)*
&lt;EMPTY&gt;
### Realm_OpenExposedDir_Response {#Realm_OpenExposedDir_Response data-text="Realm_OpenExposedDir_Response"}
*Defined in [fuchsia.component/realm.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.component/realm.fidl;l=52)*
&lt;EMPTY&gt;
## **ENUMS**
### Error [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#Error data-text="Error"}
Type: <code>uint32</code>
*Defined in [fuchsia.component/error.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.component/error.fidl;l=7)*
<p>Standard error codes for component framework protocols.</p>
<table>
<tr><th>Name</th><th>Value</th><th>Description</th></tr>
<tr id="Error.INTERNAL">
<td><h3 id="Error.INTERNAL" class="add-link hide-from-toc">INTERNAL</h3></td>
<td><code>1</code></td>
<td><p>Component manager encountered an otherwise unspecified error while
performing the operation.</p>
</td>
</tr>
<tr id="Error.INVALID_ARGUMENTS">
<td><h3 id="Error.INVALID_ARGUMENTS" class="add-link hide-from-toc">INVALID_ARGUMENTS</h3></td>
<td><code>2</code></td>
<td><p>At least one argument had an invalid format.</p>
</td>
</tr>
<tr id="Error.UNSUPPORTED">
<td><h3 id="Error.UNSUPPORTED" class="add-link hide-from-toc">UNSUPPORTED</h3></td>
<td><code>3</code></td>
<td><p>The feature is not yet supported.</p>
</td>
</tr>
<tr id="Error.ACCESS_DENIED">
<td><h3 id="Error.ACCESS_DENIED" class="add-link hide-from-toc">ACCESS_DENIED</h3></td>
<td><code>4</code></td>
<td><p>The caller did not have permission to perform the specified operation,
or one of the handles provided to the call had insufficient rights.</p>
</td>
</tr>
<tr id="Error.INSTANCE_NOT_FOUND">
<td><h3 id="Error.INSTANCE_NOT_FOUND" class="add-link hide-from-toc">INSTANCE_NOT_FOUND</h3></td>
<td><code>5</code></td>
<td><p>The component instance was not found.</p>
</td>
</tr>
<tr id="Error.INSTANCE_ALREADY_EXISTS">
<td><h3 id="Error.INSTANCE_ALREADY_EXISTS" class="add-link hide-from-toc">INSTANCE_ALREADY_EXISTS</h3></td>
<td><code>6</code></td>
<td><p>The component instance already exists.</p>
</td>
</tr>
<tr id="Error.INSTANCE_CANNOT_START">
<td><h3 id="Error.INSTANCE_CANNOT_START" class="add-link hide-from-toc">INSTANCE_CANNOT_START</h3></td>
<td><code>7</code></td>
<td><p>The component instance could not be started.</p>
</td>
</tr>
<tr id="Error.INSTANCE_CANNOT_RESOLVE">
<td><h3 id="Error.INSTANCE_CANNOT_RESOLVE" class="add-link hide-from-toc">INSTANCE_CANNOT_RESOLVE</h3></td>
<td><code>8</code></td>
<td><p>Failed to resolve the component's declaration.</p>
</td>
</tr>
<tr id="Error.COLLECTION_NOT_FOUND">
<td><h3 id="Error.COLLECTION_NOT_FOUND" class="add-link hide-from-toc">COLLECTION_NOT_FOUND</h3></td>
<td><code>9</code></td>
<td><p>The component collection was not found.</p>
</td>
</tr>
<tr id="Error.RESOURCE_UNAVAILABLE">
<td><h3 id="Error.RESOURCE_UNAVAILABLE" class="add-link hide-from-toc">RESOURCE_UNAVAILABLE</h3></td>
<td><code>10</code></td>
<td><p>There were insufficient resources to perform the operation.</p>
</td>
</tr>
<tr id="Error.INSTANCE_DIED">
<td><h3 id="Error.INSTANCE_DIED" class="add-link hide-from-toc">INSTANCE_DIED</h3></td>
<td><code>11</code></td>
<td><p>The component instance died unexpectedly.</p>
</td>
</tr>
<tr id="Error.RESOURCE_NOT_FOUND">
<td><h3 id="Error.RESOURCE_NOT_FOUND" class="add-link hide-from-toc">RESOURCE_NOT_FOUND</h3></td>
<td><code>12</code></td>
<td><p>The requested resource does not exist.</p>
</td>
</tr>
<tr id="Error.INSTANCE_CANNOT_UNRESOLVE">
<td><h3 id="Error.INSTANCE_CANNOT_UNRESOLVE" class="add-link hide-from-toc">INSTANCE_CANNOT_UNRESOLVE</h3></td>
<td><code>13</code></td>
<td><p>Failed to unresolve the component.</p>
</td>
</tr>
</table>
## **TABLES**
### CreateChildArgs [resource](/fuchsia-src/reference/fidl/language/language.md#value-vs-resource){:.fidl-attribute} {#CreateChildArgs data-text="CreateChildArgs"}
*Defined in [fuchsia.component/realm.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.component/realm.fidl;l=109)*
<table>
<tr><th>Ordinal</th><th>Field</th><th>Type</th><th>Description</th></tr>
<tr id="CreateChildArgs.numbered_handles">
<td><h3 id="CreateChildArgs.numbered_handles" class="add-link hide-from-toc">1</h3></td>
<td><code>numbered_handles</code></td>
<td>
<code>vector&lt;<a class='link' href='../fuchsia.process/'>fuchsia.process</a>/<a class='link' href='../fuchsia.process/#HandleInfo'>HandleInfo</a>&gt;[128]</code>
</td>
<td><p>The numbered handles to pass to the component instance.</p>
<p>Only PA_FD and PA_USER* handles are valid arguments, and inclusion of any other
handles will result in an error. This argument is only supported for components
in a collection with <code>SingleRun</code> durability.</p>
<p>If the runner for the component does not support the numbered handles it is
expected to close the handles.</p>
</td>
</tr>
<tr id="CreateChildArgs.dynamic_offers">
<td><h3 id="CreateChildArgs.dynamic_offers" class="add-link hide-from-toc">2</h3></td>
<td><code>dynamic_offers</code></td>
<td>
<code>vector&lt;<a class='link' href='../fuchsia.component.decl/'>fuchsia.component.decl</a>/<a class='link' href='../fuchsia.component.decl/#Offer'>Offer</a>&gt;[128]</code>
</td>
<td><p>Dynamic offers that will target the component instance.</p>
<p>Including <code>OfferDecl</code>s in this vector will cause additional capabilities
to be offered to the newly created child, beyond the <code>OfferDecl</code>s in the
parent's <code>ComponentDecl</code> that target the collection.</p>
<p>Any kind of offer (e.g., protocol, directory) can be used as a dynamic
offer. Any source that would be valid for a static offer is also valid
for a dynamic offer. Additionally, unlike static offers, dynamic offers
can use a &quot;sibling&quot; dynamic child component as a source by setting the
source to a <code>ChildRef</code> that sets the <code>collection</code> field.</p>
<p>Dynamic offers always target the newly created child component. As a
result, <code>OfferDecl</code>s in <code>dynamic_offers</code> must not set the <code>target</code>
field, as its value is implied.</p>
<p>If either the source (that is, the component named in the <code>source</code> field
of the <code>OfferDecl</code>) or the target of a dynamic offer is destroyed, the
offer itself is destroyed simultaneously.</p>
<p>In order to set this field to a non-empty value, the collection in which
the child component is being created must specify
<code>ComponentDecl.allowed_offers = STATIC_AND_DYNAMIC</code>.</p>
</td>
</tr>
</table>
## **UNIONS**
### Realm_CreateChild_Result [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#Realm_CreateChild_Result data-text="Realm_CreateChild_Result"}
*Defined in [fuchsia.component/realm.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.component/realm.fidl;l=73)*
<table>
<tr><th>Ordinal</th><th>Variant</th><th>Type</th><th>Description</th></tr>
<tr id="Realm_CreateChild_Result.response">
<td><h3 id="Realm_CreateChild_Result.response" class="add-link hide-from-toc">1</h3></td>
<td><code>response</code></td>
<td>
<code><a class='link' href='#Realm_CreateChild_Response'>Realm_CreateChild_Response</a></code>
</td>
<td></td>
</tr>
<tr id="Realm_CreateChild_Result.err">
<td><h3 id="Realm_CreateChild_Result.err" class="add-link hide-from-toc">2</h3></td>
<td><code>err</code></td>
<td>
<code><a class='link' href='#Error'>Error</a></code>
</td>
<td></td>
</tr>
</table>
### Realm_DestroyChild_Result [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#Realm_DestroyChild_Result data-text="Realm_DestroyChild_Result"}
*Defined in [fuchsia.component/realm.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.component/realm.fidl;l=88)*
<table>
<tr><th>Ordinal</th><th>Variant</th><th>Type</th><th>Description</th></tr>
<tr id="Realm_DestroyChild_Result.response">
<td><h3 id="Realm_DestroyChild_Result.response" class="add-link hide-from-toc">1</h3></td>
<td><code>response</code></td>
<td>
<code><a class='link' href='#Realm_DestroyChild_Response'>Realm_DestroyChild_Response</a></code>
</td>
<td></td>
</tr>
<tr id="Realm_DestroyChild_Result.err">
<td><h3 id="Realm_DestroyChild_Result.err" class="add-link hide-from-toc">2</h3></td>
<td><code>err</code></td>
<td>
<code><a class='link' href='#Error'>Error</a></code>
</td>
<td></td>
</tr>
</table>
### Realm_ListChildren_Result [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#Realm_ListChildren_Result data-text="Realm_ListChildren_Result"}
*Defined in [fuchsia.component/realm.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.component/realm.fidl;l=106)*
<table>
<tr><th>Ordinal</th><th>Variant</th><th>Type</th><th>Description</th></tr>
<tr id="Realm_ListChildren_Result.response">
<td><h3 id="Realm_ListChildren_Result.response" class="add-link hide-from-toc">1</h3></td>
<td><code>response</code></td>
<td>
<code><a class='link' href='#Realm_ListChildren_Response'>Realm_ListChildren_Response</a></code>
</td>
<td></td>
</tr>
<tr id="Realm_ListChildren_Result.err">
<td><h3 id="Realm_ListChildren_Result.err" class="add-link hide-from-toc">2</h3></td>
<td><code>err</code></td>
<td>
<code><a class='link' href='#Error'>Error</a></code>
</td>
<td></td>
</tr>
</table>
### Realm_OpenExposedDir_Result [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#Realm_OpenExposedDir_Result data-text="Realm_OpenExposedDir_Result"}
*Defined in [fuchsia.component/realm.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.component/realm.fidl;l=52)*
<table>
<tr><th>Ordinal</th><th>Variant</th><th>Type</th><th>Description</th></tr>
<tr id="Realm_OpenExposedDir_Result.response">
<td><h3 id="Realm_OpenExposedDir_Result.response" class="add-link hide-from-toc">1</h3></td>
<td><code>response</code></td>
<td>
<code><a class='link' href='#Realm_OpenExposedDir_Response'>Realm_OpenExposedDir_Response</a></code>
</td>
<td></td>
</tr>
<tr id="Realm_OpenExposedDir_Result.err">
<td><h3 id="Realm_OpenExposedDir_Result.err" class="add-link hide-from-toc">2</h3></td>
<td><code>err</code></td>
<td>
<code><a class='link' href='#Error'>Error</a></code>
</td>
<td></td>
</tr>
</table>
## **CONSTANTS**
<table>
<tr><th>Name</th><th>Value</th><th>Type</th><th>Description</th></tr>
<tr id="MAX_CHILD_COUNT">
<td><a href="https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.component/realm.fidl;l=21">MAX_CHILD_COUNT</a></td>
<td>
<code>128</code>
</td>
<td><code>uint32</code></td>
<td><p>The maximum number of children that the a call <code>ChildIterator.Next</code>
can return.
Note, this is not a limit on the number of children that can be added
to a component. This is merely a limit for a single invocation of the
<code>Next</code> method.</p>
</td>
</tr>
<tr id="MAX_CHILD_NAME_LENGTH">
<td><a href="https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.component/constants.fidl;l=7">MAX_CHILD_NAME_LENGTH</a></td>
<td>
<code>1024</code>
</td>
<td><code>uint32</code></td>
<td></td>
</tr>
<tr id="MAX_DYNAMIC_OFFER_COUNT">
<td><a href="https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.component/realm.fidl;l=14">MAX_DYNAMIC_OFFER_COUNT</a></td>
<td>
<code>128</code>
</td>
<td><code>uint32</code></td>
<td><p>The maximum number of dynamic offers that can target a created component.</p>
</td>
</tr>
<tr id="MAX_HANDLE_COUNT">
<td><a href="https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.component/realm.fidl;l=11">MAX_HANDLE_COUNT</a></td>
<td>
<code>128</code>
</td>
<td><code>uint32</code></td>
<td><p>The maximum number of handles that can be passed to a created component.</p>
</td>
</tr>
<tr id="MAX_MONIKER_LENGTH">
<td><a href="https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.component/constants.fidl;l=9">MAX_MONIKER_LENGTH</a></td>
<td>
<code>4096</code>
</td>
<td><code>uint32</code></td>
<td></td>
</tr>
<tr id="MAX_NAME_LENGTH">
<td><a href="https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.component/constants.fidl;l=6">MAX_NAME_LENGTH</a></td>
<td>
<code>100</code>
</td>
<td><code>uint32</code></td>
<td></td>
</tr>
<tr id="MAX_NUM_EVENTS_RECEIVED">
<td><a href="https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.component/constants.fidl;l=16">MAX_NUM_EVENTS_RECEIVED</a></td>
<td>
<code>100</code>
</td>
<td><code>uint64</code></td>
<td><p>The maximum number of events that a receiver can listen to.</p>
</td>
</tr>
<tr id="MAX_PATH_LENGTH">
<td><a href="https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.component/constants.fidl;l=8">MAX_PATH_LENGTH</a></td>
<td>
<code>1024</code>
</td>
<td><code>uint32</code></td>
<td></td>
</tr>
<tr id="MAX_SUBSCRIPTION_REQUESTS">
<td><a href="https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.component/constants.fidl;l=13">MAX_SUBSCRIPTION_REQUESTS</a></td>
<td>
<code>2</code>
</td>
<td><code>uint32</code></td>
<td><p>The maximum number of requests per event subscription.</p>
</td>
</tr>
<tr id="MAX_URL_SCHEME_LENGTH">
<td><a href="https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.component/constants.fidl;l=10">MAX_URL_SCHEME_LENGTH</a></td>
<td>
<code>100</code>
</td>
<td><code>uint32</code></td>
<td></td>
</tr>
</table>
## **ALIASES**
<table>
<tr><th>Name</th><th>Value</th><th>Description</th></tr>
<tr id="child_name">
<td><a href="https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.component/types.fidl;l=6">child_name</a></td>
<td>
<code>string</code>[<code><a class='link' href='#MAX_CHILD_NAME_LENGTH'>MAX_CHILD_NAME_LENGTH</a></code>]</td>
<td></td>
</tr>
<tr id="name">
<td><a href="https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.component/types.fidl;l=7">name</a></td>
<td>
<code>string</code>[<code><a class='link' href='#MAX_NAME_LENGTH'>MAX_NAME_LENGTH</a></code>]</td>
<td></td>
</tr>
<tr id="url_scheme">
<td><a href="https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.component/types.fidl;l=8">url_scheme</a></td>
<td>
<code>string</code>[<code><a class='link' href='#MAX_URL_SCHEME_LENGTH'>MAX_URL_SCHEME_LENGTH</a></code>]</td>
<td></td>
</tr>
</table>