21 #include <glog/logging.h>
36 switch (metadata.
type_) {
46 return "Unknown metadata type";
57 "snapshot_trigger_threshold_",
61 "snapshot_keep_threshold_",
73 "snapshot_trigger_threshold_",
78 "snapshot_keep_threshold_",
87 return serializer.
load(element);
91 return serializer.
load(element);
95 reinterpret_cast<masstree::MasstreeMetadata*>(data));
96 return serializer.
load(element);
100 reinterpret_cast<sequential::SequentialMetadata*>(data));
101 return serializer.
load(element);
116 reinterpret_cast<masstree::MasstreeMetadata*>(data));
121 reinterpret_cast<sequential::SequentialMetadata*>(data));
127 tinyxml2::XMLElement* parent,
129 uint32_t loaded_count = 0;
130 for (tinyxml2::XMLElement* element = parent->FirstChildElement(kChildTagName);
132 element = element->NextSiblingElement(kChildTagName)) {
140 VLOG(0) <<
"Loading metadata of storage-" <<
id <<
" from xml";
162 LOG(INFO) <<
"Loaded metadata of " << loaded_count <<
" storages";
168 tinyxml2::XMLElement* parent,
170 uint32_t saved_count = 0;
173 if (!blocks[
id].
exists()) {
196 LOG(INFO) <<
"Written metadata of " << saved_count <<
" storages";
Metadata meta_
common part of the metadata.
Definitions of IDs in this package and a few related constant values.
ErrorStack save_to_xml_hash(tinyxml2::XMLElement *parent, Metadata *data)
#define ERROR_STACK(e)
Instantiates ErrorStack with the given foedus::error_code, creating an error stack with the current f...
uint32_t StorageId
Unique ID for storage.
Root package of FOEDUS (Fast Optimistic Engine for Data Unification Services).
static ErrorStack add_child_element(tinyxml2::XMLElement *parent, const std::string &tag, const std::string &comment, const Externalizable &child)
child Externalizable version
Brings error stacktrace information as return value of functions.
The storage has been created and ready for use.
0 indicates invalid type.
ErrorStack save_to_xml_masstree(tinyxml2::XMLElement *parent, Metadata *data)
ErrorStack load_from_xml_sequential(tinyxml2::XMLElement *element, Metadata *data)
static ErrorStack add_enum_element(tinyxml2::XMLElement *parent, const std::string &tag, const std::string &comment, ENUM value)
enum version
ErrorStack save_to_xml_sequential(tinyxml2::XMLElement *parent, Metadata *data)
bool exists(const Path &p)
Returns if the file exists.
ErrorStack load_from_xml_hash(tinyxml2::XMLElement *element, Metadata *data)
ErrorStack save_to_xml_array(tinyxml2::XMLElement *parent, Metadata *data)
StorageType
Type of the storage, such as hash.
#define CHECK_ERROR(x)
This macro calls x and checks its returned value.
const char * kChildTagName
const ErrorStack kRetOk
Normal return value for no-error case.
static ErrorStack get_element(tinyxml2::XMLElement *parent, const std::string &tag, T *out, bool optional=false, T value=0)
Only declaration in header.
Initial state, which means the storage has not been created yet.
0x0807 : "STORAGE: This metadata type is not yet supported" .
static ErrorStack get_enum_element(tinyxml2::XMLElement *parent, const std::string &tag, ENUM *out, bool optional=false, ENUM default_value=static_cast< ENUM >(0))
enum version
#define ASSERT_ND(x)
A warning-free wrapper macro of assert() that has no performance effect in release mode even when 'x'...
StorageStatus status_
Status of the storage.
ErrorStack load_from_xml_masstree(tinyxml2::XMLElement *element, Metadata *data)
A base layout of shared data for all storage types.
ErrorStack load_from_xml_array(tinyxml2::XMLElement *element, Metadata *data)
static ErrorStack add_element(tinyxml2::XMLElement *parent, const std::string &tag, const std::string &comment, T value)
Only declaration in header.