blob: c7da3b418b2727988e7138a477f6e28eafc90a1c [file] [log] [blame] [edit]
// 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;
};