1 #include "bios_table.hpp" 2 3 #include <fstream> 4 5 namespace pldm 6 { 7 8 namespace responder 9 { 10 11 namespace bios 12 { 13 14 BIOSTable::BIOSTable(const char* filePath) : filePath(filePath) 15 { 16 } 17 18 bool BIOSTable::isEmpty() const noexcept 19 { 20 bool empty = false; 21 try 22 { 23 empty = fs::is_empty(filePath); 24 } 25 catch (fs::filesystem_error& e) 26 { 27 return true; 28 } 29 return empty; 30 } 31 32 void BIOSTable::store(const Table& table) 33 { 34 std::ofstream stream(filePath.string(), std::ios::out | std::ios::binary); 35 stream.write(reinterpret_cast<const char*>(table.data()), table.size()); 36 } 37 38 void BIOSTable::load(Response& response) const 39 { 40 auto currSize = response.size(); 41 auto fileSize = fs::file_size(filePath); 42 response.resize(currSize + fileSize); 43 std::ifstream stream(filePath.string(), std::ios::in | std::ios::binary); 44 stream.read(reinterpret_cast<char*>(response.data() + currSize), fileSize); 45 } 46 47 } // namespace bios 48 } // namespace responder 49 } // namespace pldm 50