| // Copyright 2020 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.component; |
| using fuchsia.io2; |
| |
| /// Declares a capability defined by this component. |
| flexible union CapabilityDecl { |
| 1: ServiceDecl service; |
| 2: ProtocolDecl protocol; |
| 3: DirectoryDecl directory; |
| 4: StorageDecl storage; |
| 5: RunnerDecl runner; |
| 6: ResolverDecl resolver; |
| }; |
| |
| /// Declares a service capability backed by this component. |
| /// |
| /// To learn more about services, see: |
| /// https://fuchsia.dev/fuchsia-src/glossary#service |
| table ServiceDecl { |
| /// The name of this service. |
| 1: fuchsia.component.name name; |
| |
| /// The path to the service in the component's outgoing directory. |
| 2: string:fuchsia.component.MAX_PATH_LENGTH source_path; |
| }; |
| |
| /// Declares a protocol capability backed by this component. |
| /// |
| /// To learn more about protocols, see: |
| /// https://fuchsia.dev/fuchsia-src/glossary#protocol |
| table ProtocolDecl { |
| /// The name of this protocol. |
| 1: fuchsia.component.name name; |
| |
| /// The path to the protocol in the component's outgoing directory. |
| 2: string:fuchsia.component.MAX_PATH_LENGTH source_path; |
| }; |
| |
| /// Declares a directory capability backed by this component. |
| /// |
| /// To learn more about directories, see: |
| /// https://fuchsia.dev/fuchsia-src/glossary#directory |
| table DirectoryDecl { |
| /// The name of this directory. |
| 1: fuchsia.component.name name; |
| |
| /// The path to the directory in the component's outgoing directory. |
| 2: string:fuchsia.component.MAX_PATH_LENGTH source_path; |
| |
| /// The maximum rights that can be set by a component using this directory. |
| 3: fuchsia.io2.Rights rights; |
| }; |
| |
| /// Declares a storage capability backed by a directory from which data, cache, |
| /// or meta storage can be offered. |
| table StorageDecl { |
| /// The name of this storage |
| 1: fuchsia.component.name name; |
| |
| /// The provider of the backing directory capability relative to the |
| /// component itself. Must be `parent`, `self`, or `child`. |
| 2: Ref source; |
| |
| /// The name of the directory capability from `source` that backs the |
| /// storage. |
| 3: fuchsia.component.name backing_dir; |
| |
| /// The subdirectory of the source directory that will back the storage |
| 4: string:fuchsia.component.MAX_PATH_LENGTH subdir; |
| }; |
| |
| /// Declares a runner capability backed by a service. |
| table RunnerDecl { |
| /// The name of this runner. |
| /// Must be non-empty, unique among runners declared in the same `ComponentDecl`. |
| 1: fuchsia.component.name name; |
| |
| /// The path to the runner protocol in the component's outgoing directory. |
| 2: string:fuchsia.component.MAX_PATH_LENGTH source_path; |
| }; |
| |
| /// Declares a resolver which is responsible for resolving component URLs to actual components. |
| /// See `fuchsia.sys2.ComponentResolver` for the protocol resolvers are expected to implement. |
| table ResolverDecl { |
| /// The name of this resolver. |
| /// Must be non-empty, unique among resolvers declared in the same `ComponentDecl`. |
| 1: fuchsia.component.name name; |
| |
| /// The path to the resolver protocol in the component's outgoing directory |
| 2: string:fuchsia.component.MAX_PATH_LENGTH source_path; |
| }; |