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