blob: 0c00d2db240f05a063f1bc36ead382bf81a543ab [file] [log] [blame]
Patrick Venture64919ec2018-11-15 11:52:07 -08001#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
Patrick Venture1d5a31c2019-05-20 11:38:22 -070011namespace ipmi_flash
Patrick Venture64919ec2018-11-15 11:52:07 -080012{
13
14class 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)
Patrick Venture9b37b092020-05-28 20:58:57 -070024 {}
Patrick Venture64919ec2018-11-15 11:52:07 -080025
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;
Patrick Venturecc7d1602018-11-15 13:58:33 -080030 int getSize() override;
Patrick Venture64919ec2018-11-15 11:52:07 -080031
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
Patrick Venture1d5a31c2019-05-20 11:38:22 -070043} // namespace ipmi_flash