1 #pragma once 2 3 #include "image_handler.hpp" 4 5 #include <cstdint> 6 #include <fstream> 7 #include <memory> 8 #include <string> 9 #include <vector> 10 11 namespace ipmi_flash 12 { 13 14 class FileHandler : public ImageHandlerInterface 15 { 16 public: 17 /** 18 * Create a FileHandler. This object is basically a filewriter. 19 * 20 * @param[in] filename - file to use for the contents, fully 21 * qualified file system path. 22 */ 23 explicit FileHandler(const std::string& filename) : filename(filename) 24 {} 25 26 bool open(const std::string& path) override; 27 void close() override; 28 bool write(std::uint32_t offset, 29 const std::vector<std::uint8_t>& data) override; 30 int getSize() override; 31 32 private: 33 /** the active hash path, ignore. */ 34 std::string path; 35 36 /** The file handle. */ 37 std::ofstream file; 38 39 /** The filename (including path) to use to write bytes. */ 40 std::string filename; 41 }; 42 43 } // namespace ipmi_flash 44