blob: bebce1fd15d53b7f193f30b25e7a4112b1eea124 [file] [log] [blame]
// Copyright 2020 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.
/// The FIDL representation of the component ID Index.
///
/// See (component ID index)[//docs/development/components/component_id_index.md]
/// for documentation on the schema.
library fuchsia.component.internal;
using fuchsia.component;
using fuchsia.sys;
/// 256 bits encoded in lower-cased base64 (64 chars).
alias InstanceId = string:64;
/// The path to the appmgr realm where the component runs.
alias AppmgrRealmPath = vector<fuchsia.component.name>:256;
/// Top-level type describing the component ID index.
table ComponentIdIndex {
/// If `true`, `appmgr` requires components which use
/// `isolated-persistent-storage` to list their instance in the index.
/// Otherwise, they fail to run. Note that this flag is only used by appmgr,
/// and is ignored by component_manager.
1: bool appmgr_restrict_isolated_persistent_storage;
/// A list of component ID instance entries.
///
/// Required, but may be empty.
2: vector<InstanceIdEntry>:1024 instances;
};
table InstanceIdEntry {
/// A 256-bit identifier encoded in base64 which is unique across all other
/// instance IDs in the index.
1: InstanceId instance_id;
/// An appmgr-based moniker identifying an appmgr component instance
/// associated with `instance_id`. Note that component manager ignores
/// this field; it is only consumed by appmgr.
2: AppmgrMoniker appmgr_moniker;
/// The absolute moniker identifying the component instance. Note that
/// appmgr ignores thie field; it is only consumed by component manager.
3: string:fuchsia.component.MAX_MONIKER_LENGTH moniker;
};
table AppmgrMoniker {
/// The component's URL.
1: fuchsia.sys.component_url url;
/// The path to the appmgr realm where the component runs.
2: AppmgrRealmPath realm_path;
/// The component instance's previous realm paths. `appmgr` will consider
/// these realms in addition to `realm_path`. This feature is useful when
/// moving a component to a new `realm_path`, but still needing to retain the
/// previous realm paths. For example, this feature can be used when a
/// component ID index change and the realm path code change cannot be
/// submitted atomically.
///
/// Optional.
3: vector<AppmgrRealmPath>:64 transitional_realm_paths;
};