MCPcopy Create free account
hub / github.com/chrxh/alien / loadFromFile

Method loadFromFile

source/PersisterInterface/SavepointTableService.cpp:29–63  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

27}
28
29auto SavepointTableService::loadFromFile(std::string const& filename) -> std::variant<SavepointTable, Error>
30{
31 try {
32 auto directory = std::filesystem::path(filename).parent_path();
33
34 // directory does not exist
35 if (!std::filesystem::exists(directory)) {
36 return Error{};
37 }
38
39 // no write access
40 if (!hasWriteAccess(directory)) {
41 return Error{};
42 }
43
44 // savepoint file does not exist
45 if (!std::filesystem::exists(filename)) {
46 return SavepointTable(filename, {});
47 }
48
49 std::ifstream stream(filename, std::ios::binary);
50 if (!stream) {
51 return Error{};
52 }
53
54 boost::property_tree::ptree tree;
55 boost::property_tree::read_json(stream, tree);
56 SavepointTable result(filename, std::deque<SavepointEntry>());
57 encodeDecode(tree, result, ParserTask::Decode);
58
59 return result;
60 } catch (...) {
61 return Error{};
62 }
63}
64
65std::vector<SavepointEntry> SavepointTableService::truncate(SavepointTable& table, int newSize) const
66{

Callers 1

Calls 3

hasWriteAccessFunction · 0.85
encodeDecodeFunction · 0.85
SavepointTableClass · 0.70

Tested by

no test coverage detected