| // 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_ |