blob: 1c50554c90aff4a01e05156da944283fc9fd4508 [file] [log] [blame]
// Copyright 2021 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_LOGGER_H_
#define MINIOS_LOGGER_H_
#include <memory>
#include <base/files/file_path.h>
#include <base/files/scoped_temp_dir.h>
#include <base/scoped_generic.h>
#include <brillo/namespaces/platform.h>
#include "minios/disk_util.h"
namespace minios {
extern const char kLogPath[];
extern const char kMiniOSLogsDirectory[];
class Logger {
public:
Logger(std::unique_ptr<DiskUtil> disk_util,
std::unique_ptr<brillo::Platform> platform,
const base::FilePath& root_path = base::FilePath(kLogPath));
virtual ~Logger() = default;
Logger(const Logger&) = delete;
Logger& operator=(const Logger&) = delete;
// Should only be used by `ScopedUnmounter`.
void Unmount();
// Dumps the logs in the partition number 1 (the stateful partition), if
// stateful partition does not exists or is not mountable, it will return
// false. On success, will return true.
bool DumpLogsIntoStateful();
// Return the path where the partitions to dump into get mounted on.
base::FilePath GetMountPath();
// Only for tests.
void SetRootPathForTest(const base::FilePath& root_path) {
root_path_ = root_path;
}
private:
std::unique_ptr<DiskUtil> disk_util_;
std::unique_ptr<brillo::Platform> platform_;
// The path to copy files/directories from.
base::FilePath root_path_;
// The temporary path to mount whichever partition to dump into.
base::ScopedTempDir tmp_mount_;
};
} // namespace minios
#endif // MINIOS_LOGGER_H__