// 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(); };