// 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;
|
|
enum TerminationReason {
|
// The channel closed without giving a termination reason.
|
UNKNOWN = 0;
|
// Component ran and exited with a given return_code.
|
EXITED = 1;
|
// The given URL given to launch was invalid.
|
URL_INVALID = 2;
|
// The requested package could not be found.
|
PACKAGE_NOT_FOUND = 3;
|
// An internal error happened during the launch process.
|
INTERNAL_ERROR = 4;
|
// Process creation failed.
|
PROCESS_CREATION_ERROR = 5;
|
// A Runner failed to start.
|
RUNNER_FAILED = 6;
|
// A Runner terminated while attempting to run a component.
|
RUNNER_TERMINATED = 7;
|
// Attempted to use an unsupported feature.
|
UNSUPPORTED = 8;
|
};
|
|
// An interface for controlling components.
|
//
|
// Closing this interface implicitly kills the controlled component unless
|
// the |Detach| method has been called.
|
//
|
// If the component exits, this interface will be closed.
|
//
|
// Typically obtained via |Launcher.CreateComponent|.
|
interface ComponentController {
|
// Terminates the component.
|
//
|
// This ComponentController connection is closed when the component has
|
// terminated.
|
1: Kill();
|
|
// Decouples the lifetime of the component from this controller.
|
//
|
// After calling |Detach|, the component will not be implicitly killed when
|
// this interface is closed.
|
2: Detach();
|
|
// DEPRECATED: Use OnTerminated instead of Wait().
|
// 3: Wait()
|
|
// Event that is triggered when the component is terminated.
|
//
|
// This event provides the return code of the process and reason for
|
// its termination. The return_code is only valid if the termination
|
// reason is EXITED. If the termination reason is not EXITED, the
|
// return code is guaranteed not to be 0.
|
4: -> OnTerminated(int64 return_code, TerminationReason termination_reason);
|
|
// Event that is triggered when the component's output directory is mounted.
|
//
|
// This event will not be triggered for every component, only those that
|
// serve a directory over their PA_DIRECTORY_REQUEST handle.
|
5: -> OnDirectoryReady();
|
};
|