blob: 61c98fd920961286e2cdf41d6483d31becf3ceb3 [file] [log] [blame]
// 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.
#ifndef SRC_VIRTUALIZATION_BIN_LINUX_RUNNER_LINUX_RUNNER_H_
#define SRC_VIRTUALIZATION_BIN_LINUX_RUNNER_LINUX_RUNNER_H_
#include <fuchsia/sys/cpp/fidl.h>
#include <lib/fidl/cpp/binding_set.h>
#include <lib/sys/cpp/component_context.h>
#include "src/virtualization/bin/linux_runner/guest.h"
namespace linux_runner {
class LinuxRunner : public fuchsia::virtualization::LinuxManager {
public:
LinuxRunner();
zx_status_t Init();
LinuxRunner(const LinuxRunner&) = delete;
LinuxRunner& operator=(const LinuxRunner&) = delete;
private:
// |fuchsia::virtualization::LinuxManager|
void StartAndGetLinuxGuestInfo(std::string label,
StartAndGetLinuxGuestInfoCallback callback) override;
void WipeData(WipeDataCallback callback) override;
void OnGuestInfoChanged(GuestInfo info);
std::unique_ptr<sys::ComponentContext> context_;
fidl::BindingSet<fuchsia::virtualization::LinuxManager> manager_bindings_;
std::unique_ptr<linux_runner::Guest> guest_;
std::deque<StartAndGetLinuxGuestInfoCallback> callbacks_;
std::optional<GuestInfo> info_;
};
} // namespace linux_runner
#endif // SRC_VIRTUALIZATION_BIN_LINUX_RUNNER_LINUX_RUNNER_H_