diff --git a/include/ircd/db/database/txn.h b/include/ircd/db/database/txn.h new file mode 100644 index 000000000..5ba116334 --- /dev/null +++ b/include/ircd/db/database/txn.h @@ -0,0 +1,48 @@ +// Matrix Construct +// +// Copyright (C) Matrix Construct Developers, Authors & Contributors +// Copyright (C) 2016-2018 Jason Volk +// +// Permission to use, copy, modify, and/or distribute this software for any +// purpose with or without fee is hereby granted, provided that the above +// copyright notice and this permission notice is present in all copies. The +// full license for this software is available in the LICENSE file. + +#pragma once +#define HAVE_IRCD_DB_DATABASE_TXN_H + +// This file is not part of the standard include stack because it requires +// RocksDB symbols which we cannot forward declare. It is used internally +// and does not need to be included by general users of IRCd. + +struct ircd::db::txn::handler +:rocksdb::WriteBatch::Handler +{ + using Status = rocksdb::Status; + using Slice = rocksdb::Slice; + + const database &d; + const std::function &cb; + bool _continue {true}; + + Status callback(const delta &) noexcept; + Status callback(const uint32_t &, const op &, const Slice &a, const Slice &b) noexcept; + + bool Continue() noexcept override; + Status MarkRollback(const Slice &xid) noexcept override; + Status MarkCommit(const Slice &xid) noexcept override; + Status MarkEndPrepare(const Slice &xid) noexcept override; + Status MarkBeginPrepare() noexcept override; + + Status MergeCF(const uint32_t cfid, const Slice &, const Slice &) noexcept override; + Status SingleDeleteCF(const uint32_t cfid, const Slice &) noexcept override; + Status DeleteRangeCF(const uint32_t cfid, const Slice &, const Slice &) noexcept override; + Status DeleteCF(const uint32_t cfid, const Slice &) noexcept override; + Status PutCF(const uint32_t cfid, const Slice &, const Slice &) noexcept override; + + handler(const database &d, + const std::function &cb) + :d{d} + ,cb{cb} + {} +}; diff --git a/ircd/db.cc b/ircd/db.cc index bf22efe78..a8cfd254a 100644 --- a/ircd/db.cc +++ b/ircd/db.cc @@ -29,6 +29,7 @@ #include #include #include +#include #include #include #include @@ -2247,38 +2248,6 @@ noexcept // db/txn.h // -struct ircd::db::txn::handler -:rocksdb::WriteBatch::Handler -{ - using Status = rocksdb::Status; - using Slice = rocksdb::Slice; - - const database &d; - const std::function &cb; - bool _continue {true}; - - Status callback(const delta &) noexcept; - Status callback(const uint32_t &, const op &, const Slice &a, const Slice &b) noexcept; - - bool Continue() noexcept override; - Status MarkRollback(const Slice &xid) noexcept override; - Status MarkCommit(const Slice &xid) noexcept override; - Status MarkEndPrepare(const Slice &xid) noexcept override; - Status MarkBeginPrepare() noexcept override; - - Status MergeCF(const uint32_t cfid, const Slice &, const Slice &) noexcept override; - Status SingleDeleteCF(const uint32_t cfid, const Slice &) noexcept override; - Status DeleteRangeCF(const uint32_t cfid, const Slice &, const Slice &) noexcept override; - Status DeleteCF(const uint32_t cfid, const Slice &) noexcept override; - Status PutCF(const uint32_t cfid, const Slice &, const Slice &) noexcept override; - - handler(const database &d, - const std::function &cb) - :d{d} - ,cb{cb} - {} -}; - std::string ircd::db::debug(const txn &t) { @@ -2332,7 +2301,7 @@ ircd::db::test(const txn &t, } /// -/// handler +/// handler (db/database/txn.h) /// rocksdb::Status