blob: 42e20ecfaf5049b79f689ade6adf8e47e9fff809 [file] [log] [blame]
// 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();
};