| // Copyright 2021 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.decl; |
| |
| /// Statically declares a component instance collection. |
| type Collection = table { |
| /// The name of the collection. Instances created in the collection are |
| /// scoped to this name. |
| 1: name name; |
| |
| /// The durability of instances in the collection. |
| 2: durability Durability; |
| |
| /// The environment assigned to child instances in this collection. |
| /// |
| /// Must be non-empty, reference an environment defined in the containing |
| /// `ComponentDecl`, and contain only the following characters: |
| /// [a-z0-9-_.]. |
| 3: environment name; |
| |
| /// The kinds of offers that can target the child instances in this |
| /// collection. The default value is `STATIC_ONLY`. |
| /// |
| /// Only components using the `dynamic_offers` restricted feature may set |
| /// this field. |
| 4: allowed_offers AllowedOffers; |
| |
| /// Whether child instances in this collection can have names longer than |
| /// the default length limit of 100. |
| /// |
| /// Only components using the `allow_long_names` restricted feature may set |
| /// this field. |
| 5: allow_long_names bool; |
| |
| /// Whether the data in isolated storage used by dynamic child instances and |
| /// their descendants will persist after the instances are destroyed. New |
| /// dynamic instances inherit the previous instances' data stores. |
| /// |
| /// This setting can be overridden by a lower-level collection that is a |
| /// descendant of a collection that enables/disables this setting. |
| /// |
| /// This setting applies to all storage capabilities consumed by the |
| /// collection components and their descendants. |
| /// |
| /// The default is the value inherited from an ancestral collection if set, |
| /// otherwise `false`. |
| 6: persistent_storage bool; |
| }; |
| |
| /// The durability of component instances created in a collection. |
| type Durability = strict enum { |
| /// An instance exists until either it or its parent is destroyed. |
| PERSISTENT = 1; |
| /// An instance exists until either its parent instance is stopped |
| /// or it is explicitly destroyed. |
| TRANSIENT = 2; |
| /// An instance is started upon creation and is immediately destroyed when |
| /// it stops. |
| SINGLE_RUN = 3; |
| }; |
| |
| /// The kinds of offers that can target the children in a collection. |
| type AllowedOffers = strict enum { |
| /// Only static offers may target components in the collection. "Static |
| /// offers" are the offers in the `ComponentDecl` that target the collection |
| /// itself. |
| /// |
| /// This is the default behavior. |
| STATIC_ONLY = 1; |
| |
| /// Both static offers and dynamic offers may target components in the |
| /// collection. "Static offers" are the offers in the `ComponentDecl` that |
| /// target the collection itself. "Dynamic offers" are additional offers |
| /// that are passed to `CreateChild` at runtime. |
| STATIC_AND_DYNAMIC = 2; |
| }; |