| // 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.sys2; |
| |
| using fuchsia.io2; |
| using fuchsia.component; |
| |
| /// Declares a capability exposed to either a component's containing realm or to the framework. |
| /// For example, a legacy service exposed by the component at runtime. |
| flexible union ExposeDecl { |
| 1: ExposeServiceDecl service; |
| 2: ExposeProtocolDecl protocol; |
| 3: ExposeDirectoryDecl directory; |
| 4: ExposeRunnerDecl runner; |
| 5: ExposeResolverDecl resolver; |
| }; |
| |
| /// Declares a service exposed to a component's containing realm, such as a |
| /// service exposed by the component or one of its children at runtime. |
| /// |
| /// To learn more about services, see: |
| /// https://fuchsia.dev/fuchsia-src/glossary#service |
| table ExposeServiceDecl { |
| /// The provider of the capability relative to the component itself. Must |
| /// be `self` or `child`. |
| 1: Ref source; |
| |
| /// Name identifying the service, by which it was presented to this |
| /// component. |
| 2: fuchsia.component.name source_name; |
| |
| /// The destination to which the service is exposed: either the component's realm or the |
| /// framework. |
| 3: Ref target; |
| |
| /// The name by which the capability is being exposed. |
| 4: fuchsia.component.name target_name; |
| }; |
| |
| /// Declares a protocol exposed to a component's containing realm, such as |
| /// a protocol exposed by the component or one of its children at runtime. |
| /// |
| /// To learn more about protocols, see: |
| /// https://fuchsia.dev/fuchsia-src/glossary#protocol |
| table ExposeProtocolDecl { |
| /// The provider of the capability relative to the component itself. Must |
| /// be `self` or `child`. |
| 1: Ref source; |
| |
| /// Name identifying the protocol, by which it was presented to this |
| /// component. |
| 2: fuchsia.component.name source_name; |
| |
| /// The destination to which the protocol is exposed: either the component's |
| /// realm or the framework. |
| 3: Ref target; |
| |
| /// The name by which the capability is being exposed. |
| 4: fuchsia.component.name target_name; |
| }; |
| |
| /// Declares a directory exposed to a component's containing realm, such as a |
| /// directory exposed by the component or one of its children at runtime. |
| table ExposeDirectoryDecl { |
| /// The provider of the capability relative to the component itself. Must |
| /// be `self` or `child`. |
| 1: Ref source; |
| |
| /// Name identifying the directory, by which it was presented to this |
| /// component. |
| 2: fuchsia.component.name source_name; |
| |
| /// The destination to which the directory is exposed: either the component's realm or the |
| /// framework. |
| 3: Ref target; |
| |
| /// The name by which the capability is being exposed. |
| 4: fuchsia.component.name target_name; |
| |
| /// The maximum rights that can be set by a component using this directory, |
| /// required iff `source == self`. |
| 5: fuchsia.io2.Rights rights; |
| |
| /// The subdirectory of this directory to expose instead of the root. Optional. |
| 6: string:fuchsia.component.MAX_PATH_LENGTH subdir; |
| }; |
| |
| /// Declares a runner exposed to a component's containing realm, such as a |
| /// runner exposed by the component or one of its children at runtime. |
| table ExposeRunnerDecl { |
| /// The provider of the capability relative to the component itself. Must |
| /// be `self` or `child`. |
| 1: Ref source; |
| |
| /// The name of the runner, by which it was presented to this component. |
| 2: fuchsia.component.name source_name; |
| |
| /// The destination to which the runner is exposed: either the component's realm or the |
| /// framework. |
| 3: Ref target; |
| |
| /// The name by which the capability is being exposed. |
| 4: fuchsia.component.name target_name; |
| }; |
| |
| /// Declares a resolver exposed to a component's containing realm, such as a |
| /// resolver exposed by the component or one of its children at runtime. |
| table ExposeResolverDecl { |
| /// The provider of the capability relative to the component itself. Must |
| /// be `self` or `child`. |
| 1: Ref source; |
| |
| /// The name of the resolver, by which it was presented to this component. |
| 2: fuchsia.component.name source_name; |
| |
| /// The destination to which the resolver is exposed: either the component's realm or the |
| /// framework. |
| 3: Ref target; |
| |
| /// The name by which the capability is being exposed. |
| 4: fuchsia.component.name target_name; |
| }; |