diff options
author | jeffro256 <jeffro256@tutanota.com> | 2023-06-30 14:52:43 -0500 |
---|---|---|
committer | jeffro256 <jeffro256@tutanota.com> | 2023-07-01 07:12:53 -0500 |
commit | ffbf9f4766945f33b80366c414a5721ce90e5a2e (patch) | |
tree | ad1a816d0dde18062afaad3357e88ef0d062375a /src/cryptonote_core/blockchain_and_pool.h | |
parent | Avoid nullptr dereference when constructing Blockchain and tx_memory_pool (diff) | |
download | monero-ffbf9f4766945f33b80366c414a5721ce90e5a2e.tar.xz |
blockchain_and_pool: move to crytonote_core and enforce its usage
Diffstat (limited to 'src/cryptonote_core/blockchain_and_pool.h')
-rw-r--r-- | src/cryptonote_core/blockchain_and_pool.h | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/src/cryptonote_core/blockchain_and_pool.h b/src/cryptonote_core/blockchain_and_pool.h new file mode 100644 index 000000000..c0f607f64 --- /dev/null +++ b/src/cryptonote_core/blockchain_and_pool.h @@ -0,0 +1,58 @@ +// Copyright (c) 2023, The Monero Project +// +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are met: +// +// 1. Redistributions of source code must retain the above copyright notice, +// this list of +// conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright notice, +// this list +// of conditions and the following disclaimer in the documentation and/or +// other materials provided with the distribution. +// +// 3. Neither the name of the copyright holder nor the names of its contributors +// may be +// used to endorse or promote products derived from this software without +// specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE +// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +// POSSIBILITY OF SUCH DAMAGE. + +#pragma once + +#include <memory> + +#include "blockchain.h" +#include "tx_pool.h" + +namespace cryptonote +{ +/** + * @brief Container for safely constructing Blockchain and tx_memory_pool classes + * + * The reason for this class existing is that the constructors for both Blockchain and + * tx_memory_pool take a reference for tx_memory_pool and Blockchain, respectively. Because of this + * circular reference, it is annoying/unsafe to construct these normally. This class guarantees that + * we don't make any silly mistakes with pointers / dangling references. + */ +struct BlockchainAndPool +{ + Blockchain blockchain; + tx_memory_pool tx_pool; + + BlockchainAndPool(): blockchain(tx_pool), tx_pool(blockchain) {} +}; +} |