| // 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; |
| |
| using fuchsia.url; |
| |
| /// Statically declares a child component instance. |
| type Child = table { |
| /// (Required) The name assigned to the child by its parent. |
| /// |
| /// Must be non-empty, unique among all siblings, and contain only the |
| /// following characters: [a-z0-9-_.]. |
| 1: name child_name; |
| |
| /// (Required) The child component's URL. |
| /// |
| /// Must be non-empty and a well-formed URL. |
| 2: url fuchsia.url.Url; |
| |
| /// (Required) The startup mode for the component instance. |
| /// |
| /// Must be set. |
| 3: startup StartupMode; |
| |
| /// (Optional) The environment assigned to this child. |
| /// |
| /// May be unset, in which case the child will inherit the parent component's |
| /// environment. If set, the name must reference an environment defined in |
| /// the `ComponentDecl` and it must contain only the following characters: |
| /// [a-z0-9-_.]. |
| 4: environment name; |
| |
| /// (Optional, defaults to `NONE`) The action to take if this component |
| /// instance terminates unexpectedly. |
| 5: on_terminate OnTerminate; |
| |
| /// Configuration overrides to apply to the child's base configuration. |
| /// |
| /// For a configuration field to be overridden it must be marked as mutable by parent. |
| /// |
| /// Parents must pass `ConfigOverride` values which match the child's declared schema types |
| /// exactly. |
| @available(added=12) |
| 6: config_overrides vector<ConfigOverride>:MAX; |
| }; |
| |
| /// Describes under what conditions the component may be started. |
| type StartupMode = strict enum { |
| /// Start component instance only when it receives an incoming capability request or it's |
| /// started directly with `fuchsia.component.Controller/Start`. |
| LAZY = 0; |
| |
| /// Start component instance automatically when the parent starts or (for dynamic |
| /// components) when the component is created. |
| EAGER = 1; |
| }; |
| |
| /// Describes the action to take if this component instance terminates |
| /// unexpectedly. |
| type OnTerminate = strict enum { |
| /// No action, the default |
| NONE = 0; |
| |
| /// Trigger a graceful system reboot if the component terminates for any |
| /// reason. This is a specialized feature gated by Component Framework |
| /// security policy. |
| REBOOT = 1; |
| }; |
| |
| /// A directive to override the value of a particular configuration field in the child. |
| @available(added=12) |
| type ConfigOverride = table { |
| 1: key ConfigKey; |
| 2: value ConfigValue; |
| }; |