blob: 350966216a4e8af530f027cc9d6d934875f4add7 [file] [log] [blame]
// Copyright 2020 The Chromium OS 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 MINIOS_MINIOS_H_
#define MINIOS_MINIOS_H_
#include <memory>
#include "minios/minios_interface.h"
#include "minios/network_manager_interface.h"
#include "minios/screens.h"
#include "minios/update_engine_proxy.h"
namespace minios {
extern const char kDebugConsole[];
extern const char kLogFile[];
class MiniOs : public MiniOsInterface {
public:
explicit MiniOs(std::unique_ptr<UpdateEngineProxy> update_engine_proxy,
std::shared_ptr<NetworkManagerInterface> network_manager);
virtual ~MiniOs() = default;
// Runs the miniOS flow.
virtual int Run();
// `MiniOsInterface` overrides.
bool GetState(State* state_out, brillo::ErrorPtr* error) override;
private:
MiniOs(const MiniOs&) = delete;
MiniOs& operator=(const MiniOs&) = delete;
// The current state of MiniOs.
State state_;
std::unique_ptr<UpdateEngineProxy> update_engine_proxy_;
std::shared_ptr<NetworkManagerInterface> network_manager_;
ProcessManager process_manager_;
screens::Screens screens_;
};
} // namespace minios
#endif // MINIOS_MINIOS_H__