// Copyright 2016 The Fuchsia 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;

// An interface for controlling an environment.
//
// Closing this interface implicitly kills the controlled environment unless
// the |Detach| method has been called.
//
// If the environment is destroyed, this interface will be closed.
//
// Typically obtained via |Environment.CreateNestedEnvironment|.
protocol EnvironmentController {
    // Terminates the environment.
    //
    // When an |Environment| is terminated, all applications launched
    // in the environment (and in all transitively nested environments) are also
    // killed.
    Kill() -> ();

    // Decouples the lifetime of the environment from this controller.
    //
    // After calling |Detach|, the environment will not be implicitly killed when
    // this interface is closed.
    Detach();

    // Event that is triggered when the environment is created.
    -> OnCreated();
};
