diff --git a/UnitTests/Basics/structure-size-test.cpp b/UnitTests/Basics/structure-size-test.cpp index 37c527e4d9..142f11c49b 100644 --- a/UnitTests/Basics/structure-size-test.cpp +++ b/UnitTests/Basics/structure-size-test.cpp @@ -32,6 +32,10 @@ #include "arangod/VocBase/voc-shaper.h" #include "arangod/Wal/Marker.h" +template 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)); } //////////////////////////////////////////////////////////////////////////////// diff --git a/arangod/VocBase/voc-shaper.h b/arangod/VocBase/voc-shaper.h index 980159fe3c..429e46ac2f 100644 --- a/arangod/VocBase/voc-shaper.h +++ b/arangod/VocBase/voc-shaper.h @@ -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; diff --git a/arangod/Wal/LogfileManager.cpp b/arangod/Wal/LogfileManager.cpp index 548004fe0e..aadad344c1 100644 --- a/arangod/Wal/LogfileManager.cpp +++ b/arangod/Wal/LogfileManager.cpp @@ -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; } diff --git a/arangod/Wal/Marker.cpp b/arangod/Wal/Marker.cpp index 59761fbb2b..9eca68a0f2 100644 --- a/arangod/Wal/Marker.cpp +++ b/arangod/Wal/Marker.cpp @@ -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(base()); m->_type = type; m->_size = static_cast(size); @@ -218,6 +216,8 @@ DocumentMarker::DocumentMarker (TRI_voc_tick_t databaseId, char* p = static_cast(base()) + m->_offsetJson; memcpy(p, shapedJson->_data.data, static_cast(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(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(base()); - edge_marker_t* e = reinterpret_cast(base()); +// document_marker_t* m = reinterpret_cast(base()); + edge_marker_t* m = reinterpret_cast(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(base()) + m->_offsetJson; memcpy(p, shapedJson->_data.data, static_cast(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(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(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--\\|/// @\\}" diff --git a/arangod/Wal/Marker.h b/arangod/Wal/Marker.h index 48dc54237d..31c3881829 100644 --- a/arangod/Wal/Marker.h +++ b/arangod/Wal/Marker.h @@ -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(base()); return m->_rid; } + + void dump () const; }; }