| // Copyright 2024 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.component.internal; |
| |
| using fuchsia.component.decl; |
| using fuchsia.sys2; |
| |
| alias moniker = string:fuchsia.component.decl.MAX_MONIKER_LENGTH; |
| |
| type CapabilitySource = strict union { |
| 1: component Component; |
| 2: framework Framework; |
| 3: builtin Builtin; |
| 4: namespace Namespace; |
| 5: capability Capability; |
| 6: anonymized_aggregate AnonymizedAggregate; |
| 7: filtered_provider FilteredProvider; |
| 8: filtered_aggregate_provider FilteredAggregateProvider; |
| 9: environment Environment; |
| 10: void Void; |
| }; |
| |
| type Component = table { |
| 1: capability ComponentCapability; |
| 2: moniker moniker; |
| }; |
| |
| type Framework = table { |
| 1: capability InternalCapability; |
| 2: moniker moniker; |
| }; |
| |
| type Builtin = table { |
| 1: capability InternalCapability; |
| }; |
| |
| type Namespace = table { |
| 1: capability ComponentCapability; |
| }; |
| |
| type Capability = table { |
| 1: source_capability ComponentCapability; |
| 2: moniker moniker; |
| }; |
| |
| type AnonymizedAggregate = table { |
| 1: capability AggregateCapability; |
| 2: moniker moniker; |
| 3: members vector<AggregateMember>:MAX; |
| 4: sources Sources; |
| 5: instances vector<fuchsia.sys2.ServiceInstance>:MAX; |
| }; |
| |
| type FilteredProvider = table { |
| 1: capability AggregateCapability; |
| 2: moniker moniker; |
| 3: service_capability ComponentCapability; |
| 4: offer_service_decl fuchsia.component.decl.OfferService; |
| }; |
| |
| type FilteredAggregateProvider = table { |
| 1: capability AggregateCapability; |
| 2: moniker moniker; |
| 3: offer_service_decls vector<fuchsia.component.decl.OfferService>:MAX; |
| 4: sources Sources; |
| }; |
| |
| type Environment = table { |
| 1: capability ComponentCapability; |
| 2: moniker moniker; |
| }; |
| |
| type Void = table { |
| 1: capability InternalCapability; |
| 2: moniker moniker; |
| }; |
| |
| type AggregateMember = strict union { |
| 1: child fuchsia.component.decl.ChildRef; |
| 2: collection fuchsia.component.decl.name; |
| 3: parent fuchsia.component.decl.ParentRef; |
| 4: self fuchsia.component.decl.SelfRef; |
| }; |
| |
| type Sources = table { |
| 1: framework bool; |
| 2: builtin bool; |
| 3: capability bool; |
| 4: collection bool; |
| 5: namespace bool; |
| 6: component bool; |
| 7: capability_type fuchsia.component.decl.name; |
| }; |
| |
| type AggregateCapability = strict union { |
| 1: service fuchsia.component.decl.name; |
| }; |