| // Copyright 2020 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.modular.session; |
| |
| using fuchsia.mem; |
| |
| /// A protocol used to launch sessionmgr. |
| /// |
| /// basemgr serves this protocol to session components. |
| @discoverable |
| protocol Launcher { |
| /// Launches an instance of sessionmgr with the given Modular configuration. |
| /// |
| /// |config| should contain all configuration necessary for starting a |
| /// session. When LaunchSessionmgr is called, basemgr uses only |config| to |
| /// configure the session. It does not use any fields from its startup |
| /// configuration (/config(_override)/data/startup.config). |
| /// |
| /// |config| cannot include a session launcher component. |
| /// |
| /// If sessionmgr is already running, it will be stopped and restarted with |
| /// the new configuration. |
| /// |
| /// On error, the protocol channel is closed with: |
| /// |
| /// * `ZX_ERR_INVALID_ARGS`: |config| is invalid, could not be read, or |
| /// includes a session launcher component. |
| /// * `ZX_ERR_BAD_STATE`: The session cannot be launched because |
| /// basemgr is shutting down. |
| /// |
| /// * `config` Modular configuration serialized as UTF-8 JSON |
| LaunchSessionmgr(resource struct { |
| config fuchsia.mem.Buffer; |
| }); |
| }; |