blob: 870d9fa4ccecf53b398f980be4b76fb642ff3af6 [file] [log] [blame]
// 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.sys2;
using fuchsia.component;
/// A protocol exposed in a component's hub to allow component tools
/// to resolve, bind, stop component manifests.
@discoverable
protocol LifecycleController {
/// Resolves the component designated by the provided relative moniker
/// relative to the component to which the protocol is scoped.
///
/// The function returns once the component successfully resolves, or the
/// operation fails.
Resolve(struct {
moniker string:fuchsia.component.MAX_MONIKER_LENGTH;
}) -> (struct {}) error fuchsia.component.Error;
/// Creates a child component instance dynamically. This method is equivalent to
/// fuchsia.sys2/Realm.CreateChild. See its documentation for more details.
///
/// `parent_moniker` is the moniker of the component that owns the collection
/// in which the child will be created, relative to the component to which
/// the protocol is scoped.
CreateChild(resource struct {
parent_moniker string:fuchsia.component.MAX_MONIKER_LENGTH;
collection CollectionRef;
decl ChildDecl;
args fuchsia.component.CreateChildArgs;
}) -> (struct {}) error fuchsia.component.Error;
/// Destroys a dynamically-created component instance. This method is equivalent to
/// fuchsia.sys2/Realm.DestroyChild. See its documentation for more details.
///
/// `parent_moniker` is the moniker of the component that owns the collection
/// in which the child will be destroyed, relative to the component to which
/// the protocol is scoped.
DestroyChild(struct {
parent_moniker string:fuchsia.component.MAX_MONIKER_LENGTH;
child ChildRef;
}) -> (struct {}) error fuchsia.component.Error;
/// Binds to the component designated by the provided relative moniker
/// relative to the component to which the protocol is scoped.
///
/// The function returns once the component is successfully bound, or the
/// operation fails.
Bind(struct {
moniker string:fuchsia.component.MAX_MONIKER_LENGTH;
}) -> (struct {}) error fuchsia.component.Error;
/// Stops the component designated by the provided relative moniker
/// relative to the component to which the protocol is scoped.
///
/// The function returns once the component successfully stops, or the
/// operation fails.
Stop(struct {
moniker string:fuchsia.component.MAX_MONIKER_LENGTH;
is_recursive bool;
}) -> (struct {}) error fuchsia.component.Error;
};