blob: b99a0c3cf1d44576ea53df9f0dbfd8797b79cf7a [file] [log] [blame]
// 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.
#ifndef SRC_DEVELOPER_FORENSICS_UTILS_PREVIOUS_BOOT_FILE_H_
#define SRC_DEVELOPER_FORENSICS_UTILS_PREVIOUS_BOOT_FILE_H_
#include <string>
namespace forensics {
// Manages moving a file from a previous boot (stored in either /data or /cache) to /tmp the first
// time a component is instantiated so it is accessible across component restarts, but not reboots.
class PreviousBootFile {
public:
// Move /data/<file> to /tmp/<file>.
static PreviousBootFile FromData(bool is_first_instance, const std::string& file);
// Move /cache/<file> to /tmp/<file>.
static PreviousBootFile FromCache(bool is_first_instance, const std::string& file);
// The path where data from this boot should be stored.
const std::string& CurrentBootPath() const { return current_boot_path_; }
// The path where data from the previous boot is stored. A null value indicates that the data
// wasn't successfully moved.
const std::string& PreviousBootPath() const { return previous_boot_path_; }
private:
PreviousBootFile(bool is_first_instance, const std::string& to, const std::string& from);
std::string current_boot_path_;
std::string previous_boot_path_;
};
} // namespace forensics
#endif // SRC_DEVELOPER_FORENSICS_UTILS_PREVIOUS_BOOT_FILE_H_