| // 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.component; |
| |
| /// A reference to a capability source or destination relative to this |
| /// component. |
| flexible union Ref { |
| 1: ParentRef parent; |
| 2: SelfRef self; |
| 3: ChildRef child; |
| 4: CollectionRef collection; |
| 5: FrameworkRef framework; |
| 6: CapabilityRef capability; |
| 7: DebugRef debug; |
| }; |
| |
| /// A reference to a component's parent instance. |
| struct ParentRef { |
| }; |
| |
| /// A reference to the component itself. |
| struct SelfRef { |
| }; |
| |
| /// A reference to the environment's debug capabilities. |
| struct DebugRef { |
| }; |
| |
| /// A reference to one of the component's child instances. |
| struct ChildRef { |
| /// The name assigned to the child by its parent. If `collection` is set, |
| /// `name` is scoped to `collection` and the child is a dynamic instance. |
| /// Required. |
| fuchsia.component.name name; |
| /// The collection `name` belongs to. If omitted, `name` references a static |
| /// instance. This field must be omitted if the `ChildRef` is being used in |
| /// a component declaration. Optional. |
| fuchsia.component.name? collection; |
| }; |
| |
| /// A reference to one of the component's collections. |
| struct CollectionRef { |
| fuchsia.component.name name; |
| }; |
| |
| /// A reference to the component framework itself. |
| struct FrameworkRef { |
| }; |
| |
| /// A reference to a capability declared in this component. |
| struct CapabilityRef { |
| string:fuchsia.component.MAX_NAME_LENGTH name; |
| }; |