#include "DataInnerNode.h" #include "DataLeafNode.h" #include "DataNode.h" #include "DataNodeStore.h" #include using blockstore::Block; using blockstore::Key; using std::runtime_error; using cpputils::unique_ref; namespace blobstore { namespace onblocks { namespace datanodestore { DataNode::DataNode(DataNodeView node) : _node(std::move(node)) { } DataNode::~DataNode() { } DataNodeView &DataNode::node() { return const_cast(const_cast(this)->node()); } const DataNodeView &DataNode::node() const { return _node; } const Key &DataNode::key() const { return _node.key(); } uint8_t DataNode::depth() const { return _node.Depth(); } unique_ref DataNode::convertToNewInnerNode(unique_ref node, const DataNode &first_child) { Key key = node->key(); auto block = node->_node.releaseBlock(); blockstore::utils::fillWithZeroes(block.get()); return DataInnerNode::InitializeNewNode(std::move(block), first_child); } void DataNode::flush() const { _node.flush(); } } } }