1
0
Fork 0

cleaned up WAL markers

This commit is contained in:
Jan Steemann 2014-05-21 14:17:58 +02:00
parent 0933555a3e
commit c38de677d0
5 changed files with 124 additions and 89 deletions

View File

@ -32,6 +32,10 @@
#include "arangod/VocBase/voc-shaper.h"
#include "arangod/Wal/Marker.h"
template<typename T, typename U> constexpr size_t offsetOf (U T::*member) {
return (char*) &((T*)nullptr->*member) - (char*) nullptr;
}
// -----------------------------------------------------------------------------
// --SECTION-- setup / tear-down
// -----------------------------------------------------------------------------
@ -85,10 +89,10 @@ BOOST_AUTO_TEST_CASE (tst_df_marker) {
BOOST_CHECK_EQUAL(true, s % 8 == 0);
BOOST_CHECK_EQUAL( 0, offsetof(struct TRI_df_marker_s, _size));
BOOST_CHECK_EQUAL( 4, offsetof(struct TRI_df_marker_s, _crc));
BOOST_CHECK_EQUAL( 8, offsetof(struct TRI_df_marker_s, _type));
BOOST_CHECK_EQUAL(16, offsetof(struct TRI_df_marker_s, _tick));
BOOST_CHECK_EQUAL( 0, offsetOf(&TRI_df_marker_t::_size));
BOOST_CHECK_EQUAL( 4, offsetOf(&TRI_df_marker_t::_crc));
BOOST_CHECK_EQUAL( 8, offsetOf(&TRI_df_marker_t::_type));
BOOST_CHECK_EQUAL(16, offsetOf(&TRI_df_marker_t::_tick));
}
////////////////////////////////////////////////////////////////////////////////
@ -101,10 +105,9 @@ BOOST_AUTO_TEST_CASE (tst_df_header_marker) {
BOOST_CHECK_EQUAL(24 + 16, s);
BOOST_CHECK_EQUAL(true, s % 8 == 0);
BOOST_CHECK_EQUAL( 0, offsetof(struct TRI_df_header_marker_s, base));
BOOST_CHECK_EQUAL(24, offsetof(struct TRI_df_header_marker_s, _version));
BOOST_CHECK_EQUAL(28, offsetof(struct TRI_df_header_marker_s, _maximalSize));
BOOST_CHECK_EQUAL(32, offsetof(struct TRI_df_header_marker_s, _fid));
BOOST_CHECK_EQUAL(24, offsetOf(&TRI_df_header_marker_t::_version));
BOOST_CHECK_EQUAL(28, offsetOf(&TRI_df_header_marker_t::_maximalSize));
BOOST_CHECK_EQUAL(32, offsetOf(&TRI_df_header_marker_t::_fid));
}
////////////////////////////////////////////////////////////////////////////////
@ -117,9 +120,8 @@ BOOST_AUTO_TEST_CASE (tst_df_footer_marker) {
BOOST_CHECK_EQUAL(24 + 8, s);
BOOST_CHECK_EQUAL(true, s % 8 == 0);
BOOST_CHECK_EQUAL( 0, offsetof(struct TRI_df_footer_marker_s, base));
BOOST_CHECK_EQUAL(24, offsetof(struct TRI_df_footer_marker_s, _maximalSize));
BOOST_CHECK_EQUAL(28, offsetof(struct TRI_df_footer_marker_s, _totalSize));
BOOST_CHECK_EQUAL(24, offsetOf(&TRI_df_footer_marker_t::_maximalSize));
BOOST_CHECK_EQUAL(28, offsetOf(&TRI_df_footer_marker_t::_totalSize));
}
////////////////////////////////////////////////////////////////////////////////
@ -132,9 +134,8 @@ BOOST_AUTO_TEST_CASE (tst_col_header_marker) {
BOOST_CHECK_EQUAL(24 + 16, s); // base + own size
BOOST_CHECK_EQUAL(true, s % 8 == 0);
BOOST_CHECK_EQUAL( 0, offsetof(struct TRI_col_header_marker_s, base));
BOOST_CHECK_EQUAL(24, offsetof(struct TRI_col_header_marker_s, _type));
BOOST_CHECK_EQUAL(32, offsetof(struct TRI_col_header_marker_s, _cid));
BOOST_CHECK_EQUAL(24, offsetOf(&TRI_col_header_marker_t::_type));
BOOST_CHECK_EQUAL(32, offsetOf(&TRI_col_header_marker_t::_cid));
}
////////////////////////////////////////////////////////////////////////////////
@ -147,15 +148,14 @@ BOOST_AUTO_TEST_CASE (tst_wal_document_marker) {
BOOST_CHECK_EQUAL(24 + 48, s); // base + own size
BOOST_CHECK_EQUAL(true, s % 8 == 0);
BOOST_CHECK_EQUAL( 0, offsetof(triagens::wal::document_marker_t, base));
BOOST_CHECK_EQUAL(24, offsetof(triagens::wal::document_marker_t, _databaseId));
BOOST_CHECK_EQUAL(32, offsetof(triagens::wal::document_marker_t, _collectionId));
BOOST_CHECK_EQUAL(40, offsetof(triagens::wal::document_marker_t, _rid));
BOOST_CHECK_EQUAL(48, offsetof(triagens::wal::document_marker_t, _tid));
BOOST_CHECK_EQUAL(56, offsetof(triagens::wal::document_marker_t, _shape));
BOOST_CHECK_EQUAL(64, offsetof(triagens::wal::document_marker_t, _offsetKey));
BOOST_CHECK_EQUAL(66, offsetof(triagens::wal::document_marker_t, _offsetLegend));
BOOST_CHECK_EQUAL(68, offsetof(triagens::wal::document_marker_t, _offsetJson));
BOOST_CHECK_EQUAL(24, offsetOf(&triagens::wal::document_marker_t::_databaseId));
BOOST_CHECK_EQUAL(32, offsetOf(&triagens::wal::document_marker_t::_collectionId));
BOOST_CHECK_EQUAL(40, offsetOf(&triagens::wal::document_marker_t::_rid));
BOOST_CHECK_EQUAL(48, offsetOf(&triagens::wal::document_marker_t::_tid));
BOOST_CHECK_EQUAL(56, offsetOf(&triagens::wal::document_marker_t::_shape));
BOOST_CHECK_EQUAL(64, offsetOf(&triagens::wal::document_marker_t::_offsetKey));
BOOST_CHECK_EQUAL(66, offsetOf(&triagens::wal::document_marker_t::_offsetLegend));
BOOST_CHECK_EQUAL(68, offsetOf(&triagens::wal::document_marker_t::_offsetJson));
}
////////////////////////////////////////////////////////////////////////////////
@ -168,11 +168,10 @@ BOOST_AUTO_TEST_CASE (tst_wal_edge_marker) {
BOOST_CHECK_EQUAL(24 + 48 + 24, s); // base + own size
BOOST_CHECK_EQUAL(true, s % 8 == 0);
BOOST_CHECK_EQUAL( 0, offsetof(triagens::wal::edge_marker_t, base));
BOOST_CHECK_EQUAL(72, offsetof(triagens::wal::edge_marker_t, _toCid));
BOOST_CHECK_EQUAL(80, offsetof(triagens::wal::edge_marker_t, _fromCid));
BOOST_CHECK_EQUAL(88, offsetof(triagens::wal::edge_marker_t, _offsetToKey));
BOOST_CHECK_EQUAL(90, offsetof(triagens::wal::edge_marker_t, _offsetFromKey));
BOOST_CHECK_EQUAL(72, offsetOf(&triagens::wal::edge_marker_t::_toCid));
BOOST_CHECK_EQUAL(80, offsetOf(&triagens::wal::edge_marker_t::_fromCid));
BOOST_CHECK_EQUAL(88, offsetOf(&triagens::wal::edge_marker_t::_offsetToKey));
BOOST_CHECK_EQUAL(90, offsetOf(&triagens::wal::edge_marker_t::_offsetFromKey));
}
////////////////////////////////////////////////////////////////////////////////
@ -185,11 +184,10 @@ BOOST_AUTO_TEST_CASE (tst_wal_remove_marker) {
BOOST_CHECK_EQUAL(24 + 32, s); // base + own size
BOOST_CHECK_EQUAL(true, s % 8 == 0);
BOOST_CHECK_EQUAL( 0, offsetof(triagens::wal::remove_marker_t, base));
BOOST_CHECK_EQUAL(24, offsetof(triagens::wal::remove_marker_t, _databaseId));
BOOST_CHECK_EQUAL(32, offsetof(triagens::wal::remove_marker_t, _collectionId));
BOOST_CHECK_EQUAL(40, offsetof(triagens::wal::remove_marker_t, _rid));
BOOST_CHECK_EQUAL(48, offsetof(triagens::wal::remove_marker_t, _tid));
BOOST_CHECK_EQUAL(24, offsetOf(&triagens::wal::remove_marker_t::_databaseId));
BOOST_CHECK_EQUAL(32, offsetOf(&triagens::wal::remove_marker_t::_collectionId));
BOOST_CHECK_EQUAL(40, offsetOf(&triagens::wal::remove_marker_t::_rid));
BOOST_CHECK_EQUAL(48, offsetOf(&triagens::wal::remove_marker_t::_tid));
}
////////////////////////////////////////////////////////////////////////////////
@ -202,12 +200,11 @@ BOOST_AUTO_TEST_CASE (tst_doc_document_key_marker) {
BOOST_CHECK_EQUAL(24 + 32, s); // base + own size
BOOST_CHECK_EQUAL(true, s % 8 == 0);
BOOST_CHECK_EQUAL( 0, offsetof(struct TRI_doc_document_key_marker_s, base));
BOOST_CHECK_EQUAL(24, offsetof(struct TRI_doc_document_key_marker_s, _rid));
BOOST_CHECK_EQUAL(32, offsetof(struct TRI_doc_document_key_marker_s, _tid));
BOOST_CHECK_EQUAL(40, offsetof(struct TRI_doc_document_key_marker_s, _shape));
BOOST_CHECK_EQUAL(48, offsetof(struct TRI_doc_document_key_marker_s, _offsetKey));
BOOST_CHECK_EQUAL(50, offsetof(struct TRI_doc_document_key_marker_s, _offsetJson));
BOOST_CHECK_EQUAL(24, offsetOf(&TRI_doc_document_key_marker_t::_rid));
BOOST_CHECK_EQUAL(32, offsetOf(&TRI_doc_document_key_marker_t::_tid));
BOOST_CHECK_EQUAL(40, offsetOf(&TRI_doc_document_key_marker_t::_shape));
BOOST_CHECK_EQUAL(48, offsetOf(&TRI_doc_document_key_marker_t::_offsetKey));
BOOST_CHECK_EQUAL(50, offsetOf(&TRI_doc_document_key_marker_t::_offsetJson));
}
////////////////////////////////////////////////////////////////////////////////
@ -220,11 +217,10 @@ BOOST_AUTO_TEST_CASE (tst_doc_edge_key_marker) {
BOOST_CHECK_EQUAL(24 + 56, s); // base + own size
BOOST_CHECK_EQUAL(true, s % 8 == 0);
BOOST_CHECK_EQUAL( 0, offsetof(struct TRI_doc_edge_key_marker_s, base));
BOOST_CHECK_EQUAL(56, offsetof(struct TRI_doc_edge_key_marker_s, _toCid));
BOOST_CHECK_EQUAL(64, offsetof(struct TRI_doc_edge_key_marker_s, _fromCid));
BOOST_CHECK_EQUAL(72, offsetof(struct TRI_doc_edge_key_marker_s, _offsetToKey));
BOOST_CHECK_EQUAL(74, offsetof(struct TRI_doc_edge_key_marker_s, _offsetFromKey));
BOOST_CHECK_EQUAL(56, offsetOf(&TRI_doc_edge_key_marker_t::_toCid));
BOOST_CHECK_EQUAL(64, offsetOf(&TRI_doc_edge_key_marker_t::_fromCid));
BOOST_CHECK_EQUAL(72, offsetOf(&TRI_doc_edge_key_marker_t::_offsetToKey));
BOOST_CHECK_EQUAL(74, offsetOf(&TRI_doc_edge_key_marker_t::_offsetFromKey));
}
////////////////////////////////////////////////////////////////////////////////
@ -237,8 +233,7 @@ BOOST_AUTO_TEST_CASE (tst_doc_begin_transaction_marker) {
BOOST_CHECK_EQUAL(24 + 8 + 8, s); // base + own size
BOOST_CHECK_EQUAL(true, s % 8 == 0);
BOOST_CHECK_EQUAL( 0, offsetof(struct TRI_doc_begin_transaction_marker_s, base));
BOOST_CHECK_EQUAL(24, offsetof(struct TRI_doc_begin_transaction_marker_s, _tid));
BOOST_CHECK_EQUAL(24, offsetOf(&TRI_doc_begin_transaction_marker_t::_tid));
}
////////////////////////////////////////////////////////////////////////////////
@ -251,8 +246,7 @@ BOOST_AUTO_TEST_CASE (tst_doc_commit_transaction_marker) {
BOOST_CHECK_EQUAL(24 + 8, s); // base + own size
BOOST_CHECK_EQUAL(true, s % 8 == 0);
BOOST_CHECK_EQUAL( 0, offsetof(struct TRI_doc_commit_transaction_marker_s, base));
BOOST_CHECK_EQUAL(24, offsetof(struct TRI_doc_commit_transaction_marker_s, _tid));
BOOST_CHECK_EQUAL(24, offsetOf(&TRI_doc_commit_transaction_marker_t::_tid));
}
////////////////////////////////////////////////////////////////////////////////
@ -265,8 +259,7 @@ BOOST_AUTO_TEST_CASE (tst_doc_abort_transaction_marker) {
BOOST_CHECK_EQUAL(24 + 8, s); // base + own size
BOOST_CHECK_EQUAL(true, s % 8 == 0);
BOOST_CHECK_EQUAL( 0, offsetof(struct TRI_doc_abort_transaction_marker_s, base));
BOOST_CHECK_EQUAL(24, offsetof(struct TRI_doc_abort_transaction_marker_s, _tid));
BOOST_CHECK_EQUAL(24, offsetOf(&TRI_doc_abort_transaction_marker_t::_tid));
}
////////////////////////////////////////////////////////////////////////////////
@ -279,9 +272,8 @@ BOOST_AUTO_TEST_CASE (tst_df_attribute_marker) {
BOOST_CHECK_EQUAL(24 + 16, s); // base + own size
BOOST_CHECK_EQUAL(true, s % 8 == 0);
BOOST_CHECK_EQUAL( 0, offsetof(struct TRI_df_attribute_marker_s, base));
BOOST_CHECK_EQUAL(24, offsetof(struct TRI_df_attribute_marker_s, _aid));
BOOST_CHECK_EQUAL(32, offsetof(struct TRI_df_attribute_marker_s, _size));
BOOST_CHECK_EQUAL(24, offsetOf(&TRI_df_attribute_marker_t::_aid));
BOOST_CHECK_EQUAL(32, offsetOf(&TRI_df_attribute_marker_t::_size));
}
////////////////////////////////////////////////////////////////////////////////
@ -293,8 +285,6 @@ BOOST_AUTO_TEST_CASE (tst_df_shape_marker) {
BOOST_CHECK_EQUAL(24, s); // base + own size
BOOST_CHECK_EQUAL(true, s % 8 == 0);
BOOST_CHECK_EQUAL( 0, offsetof(struct TRI_df_shape_marker_s, base));
}
////////////////////////////////////////////////////////////////////////////////

View File

@ -182,9 +182,9 @@ static inline void TRI_EXTRACT_SHAPED_JSON_MARKER (TRI_shaped_json_t& dst,
(dst)._data.data = (((char*) (src)) + ((triagens::wal::document_marker_t*) (src))->_offsetJson);
}
else if (((TRI_df_marker_t const*) (src))->_type == TRI_WAL_MARKER_EDGE) {
(dst)._sid = ((triagens::wal::edge_marker_t*) (src))->base._shape;
(dst)._data.length = ((TRI_df_marker_t*) (src))->_size - ((triagens::wal::edge_marker_t*) (src))->base._offsetJson;
(dst)._data.data = (((char*) (src)) + ((triagens::wal::edge_marker_t*) (src))->base._offsetJson);
(dst)._sid = ((triagens::wal::edge_marker_t*) (src))->_shape;
(dst)._data.length = ((TRI_df_marker_t*) (src))->_size - ((triagens::wal::edge_marker_t*) (src))->_offsetJson;
(dst)._data.data = (((char*) (src)) + ((triagens::wal::edge_marker_t*) (src))->_offsetJson);
}
else {
(dst)._sid = 0;

View File

@ -29,7 +29,6 @@
#include "BasicsC/hashes.h"
#include "BasicsC/json.h"
#include "BasicsC/logging.h"
#include "BasicsC/tri-strings.h"
#include "Basics/Exceptions.h"
#include "Basics/FileUtils.h"
#include "Basics/JsonHelper.h"
@ -448,7 +447,6 @@ SlotInfo LogfileManager::allocateAndWrite (void* src,
slotInfo.slot->fill(src, size);
std::cout << TRI_PrintableString((char const*) src, size) << "\n";
finalise(slotInfo, waitForSync);
return slotInfo;
}

View File

@ -46,8 +46,6 @@ Marker::Marker (TRI_df_marker_type_e type,
: _buffer(new char[size]),
_size(size) {
std::cout << "CREATING MARKER OF TYPE: " << type << "\n";
TRI_df_marker_t* m = reinterpret_cast<TRI_df_marker_t*>(base());
m->_type = type;
m->_size = static_cast<TRI_voc_size_t>(size);
@ -218,6 +216,8 @@ DocumentMarker::DocumentMarker (TRI_voc_tick_t databaseId,
char* p = static_cast<char*>(base()) + m->_offsetJson;
memcpy(p, shapedJson->_data.data, static_cast<size_t>(shapedJson->_data.length));
}
dump();
}
////////////////////////////////////////////////////////////////////////////////
@ -227,6 +227,21 @@ DocumentMarker::DocumentMarker (TRI_voc_tick_t databaseId,
DocumentMarker::~DocumentMarker () {
}
////////////////////////////////////////////////////////////////////////////////
/// @brief dump marker
////////////////////////////////////////////////////////////////////////////////
void DocumentMarker::dump () const {
document_marker_t* m = reinterpret_cast<document_marker_t*>(base());
std::cout << "WAL DOCUMENT MARKER FOR DB " << m->_databaseId
<< ", COLLECTION " << m->_collectionId
<< ", REV: " << m->_rid
<< ", TRX: " << m->_tid
<< ", KEY: " << ((char*) base() + m->_offsetKey)
<< "\n";
}
// -----------------------------------------------------------------------------
// --SECTION-- EdgeMarker
// -----------------------------------------------------------------------------
@ -250,8 +265,8 @@ EdgeMarker::EdgeMarker (TRI_voc_tick_t databaseId,
: Marker(TRI_WAL_MARKER_EDGE,
sizeof(edge_marker_t) + alignedSize(key.size() + 1) + alignedSize(strlen(edge->_fromKey) + 1) + alignedSize(strlen(edge->_toKey) + 1) + legend.getSize() + shapedJson->_data.length) {
document_marker_t* m = reinterpret_cast<document_marker_t*>(base());
edge_marker_t* e = reinterpret_cast<edge_marker_t*>(base());
// document_marker_t* m = reinterpret_cast<document_marker_t*>(base());
edge_marker_t* m = reinterpret_cast<edge_marker_t*>(base());
m->_databaseId = databaseId;
m->_collectionId = collectionId;
@ -259,17 +274,17 @@ EdgeMarker::EdgeMarker (TRI_voc_tick_t databaseId,
m->_tid = transactionId;
m->_shape = shapedJson->_sid;
m->_offsetKey = sizeof(edge_marker_t); // start position of key
e->_toCid = edge->_toCid;
e->_fromCid = edge->_fromCid;
e->_offsetToKey = m->_offsetKey + alignedSize(key.size() + 1);
e->_offsetFromKey = e->_offsetToKey + alignedSize(strlen(edge->_toKey) + 1);
m->_offsetLegend = e->_offsetFromKey + alignedSize(strlen(edge->_fromKey) + 1);
m->_toCid = edge->_toCid;
m->_fromCid = edge->_fromCid;
m->_offsetToKey = m->_offsetKey + alignedSize(key.size() + 1);
m->_offsetFromKey = m->_offsetToKey + alignedSize(strlen(edge->_toKey) + 1);
m->_offsetLegend = m->_offsetFromKey + alignedSize(strlen(edge->_fromKey) + 1);
m->_offsetJson = m->_offsetLegend + alignedSize(legend.getSize());
// store keys
storeSizedString(m->_offsetKey, key.c_str(), key.size());
storeSizedString(e->_offsetFromKey, edge->_fromKey, strlen(edge->_fromKey));
storeSizedString(e->_offsetToKey, edge->_toKey, strlen(edge->_toKey));
storeSizedString(m->_offsetFromKey, edge->_fromKey, strlen(edge->_fromKey));
storeSizedString(m->_offsetToKey, edge->_toKey, strlen(edge->_toKey));
// store legend
{
@ -282,6 +297,8 @@ EdgeMarker::EdgeMarker (TRI_voc_tick_t databaseId,
char* p = static_cast<char*>(base()) + m->_offsetJson;
memcpy(p, shapedJson->_data.data, static_cast<size_t>(shapedJson->_data.length));
}
dump();
}
////////////////////////////////////////////////////////////////////////////////
@ -291,6 +308,25 @@ EdgeMarker::EdgeMarker (TRI_voc_tick_t databaseId,
EdgeMarker::~EdgeMarker () {
}
////////////////////////////////////////////////////////////////////////////////
/// @brief dump marker
////////////////////////////////////////////////////////////////////////////////
void EdgeMarker::dump () const {
edge_marker_t* m = reinterpret_cast<edge_marker_t*>(base());
std::cout << "WAL EDGE MARKER FOR DB " << m->_databaseId
<< ", COLLECTION " << m->_collectionId
<< ", REV: " << m->_rid
<< ", TRX: " << m->_tid
<< ", KEY: " << ((char*) base() + m->_offsetKey)
<< ", FROMCID " << m->_fromCid
<< ", TOCID " << m->_toCid
<< ", FROMKEY: " << ((char*) base() + m->_offsetFromKey)
<< ", TOKEY: " << ((char*) base() + m->_offsetFromKey)
<< "\n";
}
// -----------------------------------------------------------------------------
// --SECTION-- RemoveMarker
// -----------------------------------------------------------------------------
@ -317,6 +353,8 @@ RemoveMarker::RemoveMarker (TRI_voc_tick_t databaseId,
m->_tid = transactionId;
storeSizedString(sizeof(remove_marker_t), key.c_str(), key.size());
dump();
}
////////////////////////////////////////////////////////////////////////////////
@ -326,6 +364,21 @@ RemoveMarker::RemoveMarker (TRI_voc_tick_t databaseId,
RemoveMarker::~RemoveMarker () {
}
////////////////////////////////////////////////////////////////////////////////
/// @brief dump marker
////////////////////////////////////////////////////////////////////////////////
void RemoveMarker::dump () const {
remove_marker_t* m = reinterpret_cast<remove_marker_t*>(base());
std::cout << "WAL REMOVE MARKER FOR DB " << m->_databaseId
<< ", COLLECTION " << m->_collectionId
<< ", REV: " << m->_rid
<< ", TRX: " << m->_tid
<< ", KEY: " << (((char*) base()) + sizeof(remove_marker_t))
<< "\n";
}
// Local Variables:
// mode: outline-minor
// outline-regexp: "/// @brief\\|/// {@inheritDoc}\\|/// @addtogroup\\|/// @page\\|// --SECTION--\\|/// @\\}"

View File

@ -47,9 +47,7 @@ namespace triagens {
/// @brief wal transaction begin marker
////////////////////////////////////////////////////////////////////////////////
struct transaction_begin_marker_t {
TRI_df_marker_t base;
struct transaction_begin_marker_t : TRI_df_marker_t {
TRI_voc_tick_t _databaseId;
TRI_voc_tid_t _transactionId;
};
@ -58,9 +56,7 @@ namespace triagens {
/// @brief wal transaction commit marker
////////////////////////////////////////////////////////////////////////////////
struct transaction_commit_marker_t {
TRI_df_marker_t base;
struct transaction_commit_marker_t : TRI_df_marker_t {
TRI_voc_tick_t _databaseId;
TRI_voc_tid_t _transactionId;
};
@ -69,9 +65,7 @@ namespace triagens {
/// @brief wal transaction abort marker
////////////////////////////////////////////////////////////////////////////////
struct transaction_abort_marker_t {
TRI_df_marker_t base;
struct transaction_abort_marker_t : TRI_df_marker_t {
TRI_voc_tick_t _databaseId;
TRI_voc_tid_t _transactionId;
};
@ -80,9 +74,7 @@ namespace triagens {
/// @brief wal document marker
////////////////////////////////////////////////////////////////////////////////
struct document_marker_t {
TRI_df_marker_t base;
struct document_marker_t : TRI_df_marker_t {
TRI_voc_tick_t _databaseId;
TRI_voc_cid_t _collectionId;
@ -100,9 +92,7 @@ namespace triagens {
/// @brief wal edge marker
////////////////////////////////////////////////////////////////////////////////
struct edge_marker_t {
document_marker_t base;
struct edge_marker_t : document_marker_t {
TRI_voc_cid_t _toCid;
TRI_voc_cid_t _fromCid;
@ -118,9 +108,7 @@ namespace triagens {
/// @brief wal remove marker
////////////////////////////////////////////////////////////////////////////////
struct remove_marker_t {
TRI_df_marker_t base;
struct remove_marker_t : TRI_df_marker_t {
TRI_voc_tick_t _databaseId;
TRI_voc_cid_t _collectionId;
@ -247,6 +235,8 @@ namespace triagens {
TRI_shaped_json_t const*);
~DocumentMarker ();
void dump () const;
};
// -----------------------------------------------------------------------------
@ -267,6 +257,8 @@ namespace triagens {
TRI_shaped_json_t const*);
~EdgeMarker ();
void dump () const;
};
// -----------------------------------------------------------------------------
@ -295,6 +287,8 @@ namespace triagens {
remove_marker_t const* m = reinterpret_cast<remove_marker_t const*>(base());
return m->_rid;
}
void dump () const;
};
}