Summary: GraphDb is refactored to become an API exposing different parts necessary for the database to function. These different parts can have different implementations in SingleNode or distributed Master/Server GraphDb implementations. Interally GraphDb is implemented using two class heirarchies. One contains all the members and correct wiring for each situation. The other takes care of initialization and shutdown. This architecture is practical because it can guarantee that the initialization of the object structure is complete, before initializing state. Reviewers: buda, mislav.bradac, dgleich, teon.banek Reviewed By: teon.banek Subscribers: pullbot Differential Revision: https://phabricator.memgraph.io/D1093
31 lines
949 B
C++
31 lines
949 B
C++
#pragma once
|
|
|
|
#include <experimental/filesystem>
|
|
#include <unordered_map>
|
|
|
|
#include "database/graph_db.hpp"
|
|
#include "durability/hashed_file_reader.hpp"
|
|
#include "storage/vertex_accessor.hpp"
|
|
|
|
namespace fs = std::experimental::filesystem;
|
|
|
|
namespace durability {
|
|
|
|
/** Reads snapshot metadata from the end of the file without messing up the
|
|
* hash. */
|
|
bool ReadSnapshotSummary(HashedFileReader &buffer, int64_t &vertex_count,
|
|
int64_t &edge_count, uint64_t &hash);
|
|
|
|
/**
|
|
* Recovers database from durability. If recovering fails, false is returned
|
|
* and db_accessor aborts transaction, else true is returned and transaction is
|
|
* commited.
|
|
*
|
|
* @param durability_dir - Path to durability directory.
|
|
* @param db - The database to recover into.
|
|
* @return - If recovery was succesful.
|
|
*/
|
|
bool Recover(const std::experimental::filesystem::path &durability_dir,
|
|
database::GraphDb &db);
|
|
} // namespace durability
|