92 lines
3.2 KiB
Plaintext
92 lines
3.2 KiB
Plaintext
// Copyright 2016 The Chromium 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.sys;
|
|
|
|
// An FDIO file descriptor.
|
|
// TODO(abarth): Use the real FDIO declaration once FDIO converts to FIDL2.
|
|
struct FileDescriptor {
|
|
// The FDIO types of the handle (e.g., FA_FDIO_REMOTE).
|
|
int32 type0;
|
|
int32 type1;
|
|
int32 type2;
|
|
|
|
// The handles for the file descriptor (e.g., a channel).
|
|
handle? handle0;
|
|
handle? handle1;
|
|
handle? handle2;
|
|
};
|
|
|
|
// Information used to create an instance of a component and obtain
|
|
// services from it.
|
|
struct LaunchInfo {
|
|
// The location from which to retrieve this component.
|
|
//
|
|
// This field will probably be replaced with a stronger notion of identity,
|
|
// such as an unforgeable token. This field is included in this iteration to
|
|
// ease the transition from the previous component interfaces.
|
|
string url;
|
|
|
|
// The arguments to be provided to the component.
|
|
vector<string>? arguments;
|
|
|
|
// The file descriptor to use for stdout.
|
|
//
|
|
// If null, the component will use the default stdout for the environment.
|
|
FileDescriptor? out;
|
|
|
|
// The file descriptor to use for stderr.
|
|
//
|
|
// If null, the component will use the default stderr for the environment.
|
|
FileDescriptor? err;
|
|
|
|
// The interface request for a Directory that is passed through to the
|
|
// component and arrives in the component as its |directory_request|
|
|
// interface request.
|
|
handle<channel>? directory_request;
|
|
|
|
// A custom namespace that can be appended to the namespace generated by
|
|
// appmgr and provided to this component.
|
|
// Adding a mount point at standard paths like 'pkg' or 'svc' will be ignored.
|
|
// HACK(alhaad): Adding mount points for deprecated default directories like
|
|
// '/data' will override the default.
|
|
FlatNamespace? flat_namespace;
|
|
|
|
// A list of services to be added to this component's svc namespace. These
|
|
// services are in addition to those coming from Environment.
|
|
ServiceList? additional_services;
|
|
};
|
|
|
|
struct ServiceList {
|
|
// A list of services that can be requested from |provider|.
|
|
vector<string> names;
|
|
|
|
// A service provider to get the services listed in |names| from.
|
|
ServiceProvider? provider;
|
|
|
|
// A channel to the directory hosting the services in |names|.
|
|
// TODO(CP-124): Support |host_directory| for CreateComponent and deprecate
|
|
// |provider|.
|
|
handle<channel>? host_directory;
|
|
};
|
|
|
|
// An interface for creating component instances.
|
|
//
|
|
// Typically obtained via |Environment.GetLauncher|.
|
|
[Discoverable]
|
|
interface Launcher {
|
|
// Creates a new instance of the component described by |launch_info|.
|
|
//
|
|
// The component instance is created in the |Environment|
|
|
// associated with this |Launcher|. When creating the component,
|
|
// the environment requests the environment services for this component from
|
|
// its |EnvironmentHost|.
|
|
//
|
|
// The |controller| can be used to control the lifecycle of the created
|
|
// component instance. If an |ComponentController|'s interface is
|
|
// requested, the component instance is killed when the interface is closed.
|
|
1: CreateComponent(LaunchInfo launch_info,
|
|
request<ComponentController>? controller);
|
|
};
|