| // Copyright 2019 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.netemul.sandbox; |
| |
| using fuchsia.netemul.environment; |
| using fuchsia.netemul.network; |
| using fuchsia.netemul.sync; |
| |
| /// Every connection to `Sandbox` represents a self-contained |
| /// context where ManagedEnvironments can be created. The |
| /// NetworkContext and SyncManager instances offered by it are |
| /// the same that are exposed to any ManagedEnvironment created |
| /// by the Sandbox. |
| /// The lifetime of the created environments (and the context |
| /// services) is bound to the connection to the Sandbox service. |
| /// If the channel is closed, all the environments and the |
| /// components created within them will be terminated. |
| [Discoverable] |
| protocol Sandbox { |
| /// Creates a new empty environment `root_env` configured by `options`. |
| CreateEnvironment(request<fuchsia.netemul.environment.ManagedEnvironment> root_env, fuchsia.netemul.environment.EnvironmentOptions options); |
| /// Gets this sandbox's NetworkContext. |
| GetNetworkContext(request<fuchsia.netemul.network.NetworkContext> network_context); |
| /// Gets this sandbox's SyncManager. |
| GetSyncManager(request<fuchsia.netemul.sync.SyncManager> sync_manager); |
| }; |