|  | // 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|. | 
|  | protocol ComponentController { | 
|  | // Terminates the component. | 
|  | // | 
|  | // This ComponentController connection is closed when the component has | 
|  | // terminated. | 
|  | 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. | 
|  | 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. | 
|  | -> 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. | 
|  | -> OnDirectoryReady(); | 
|  | }; |