Bitcoin Core
31.1.0
P2P Digital Currency
Toggle main menu visibility
Loading...
Searching...
No Matches
src
kernel
disconnected_transactions.h
Go to the documentation of this file.
1
// Copyright (c) 2023-present The Bitcoin Core developers
2
// Distributed under the MIT software license, see the accompanying
3
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
4
5
#ifndef BITCOIN_KERNEL_DISCONNECTED_TRANSACTIONS_H
6
#define BITCOIN_KERNEL_DISCONNECTED_TRANSACTIONS_H
7
8
#include <
primitives/transaction.h
>
9
#include <
util/hasher.h
>
10
11
#include <cstddef>
12
#include <cstdint>
13
#include <list>
14
#include <unordered_map>
15
#include <vector>
16
18
static
const
unsigned
int
MAX_DISCONNECTED_TX_POOL_BYTES
{20'000'000};
39
class
DisconnectedBlockTransactions
{
40
private
:
42
uint64_t
cachedInnerUsage
= 0;
43
const
size_t
m_max_mem_usage
;
44
std::list<CTransactionRef>
queuedTx
;
45
using
TxList
=
decltype
(
queuedTx
);
46
std::unordered_map<Txid, TxList::iterator, SaltedTxidHasher>
iters_by_txid
;
47
49
std::vector<CTransactionRef>
LimitMemoryUsage
();
50
51
public
:
52
DisconnectedBlockTransactions
(
size_t
max_mem_usage)
53
:
m_max_mem_usage
{max_mem_usage} {}
54
55
~DisconnectedBlockTransactions
();
56
57
size_t
DynamicMemoryUsage
()
const
;
58
66
[[nodiscard]] std::vector<CTransactionRef>
AddTransactionsFromBlock
(
const
std::vector<CTransactionRef>& vtx);
67
69
void
removeForBlock
(
const
std::vector<CTransactionRef>& vtx);
70
71
size_t
size
()
const
{
return
queuedTx
.size(); }
72
73
void
clear
();
74
76
std::list<CTransactionRef>
take
();
77
};
78
#endif
// BITCOIN_KERNEL_DISCONNECTED_TRANSACTIONS_H
DisconnectedBlockTransactions::clear
void clear()
Definition
disconnected_transactions.cpp:78
DisconnectedBlockTransactions::DisconnectedBlockTransactions
DisconnectedBlockTransactions(size_t max_mem_usage)
Definition
disconnected_transactions.h:52
DisconnectedBlockTransactions::iters_by_txid
std::unordered_map< Txid, TxList::iterator, SaltedTxidHasher > iters_by_txid
Definition
disconnected_transactions.h:46
DisconnectedBlockTransactions::take
std::list< CTransactionRef > take()
Clear all data structures and return the list of transactions.
Definition
disconnected_transactions.cpp:85
DisconnectedBlockTransactions::TxList
decltype(queuedTx) TxList
Definition
disconnected_transactions.h:45
DisconnectedBlockTransactions::~DisconnectedBlockTransactions
~DisconnectedBlockTransactions()
Definition
disconnected_transactions.cpp:24
DisconnectedBlockTransactions::removeForBlock
void removeForBlock(const std::vector< CTransactionRef > &vtx)
Remove any entries that are in this block.
Definition
disconnected_transactions.cpp:61
DisconnectedBlockTransactions::cachedInnerUsage
uint64_t cachedInnerUsage
Cached dynamic memory usage for the CTransactionRefs.
Definition
disconnected_transactions.h:42
DisconnectedBlockTransactions::DynamicMemoryUsage
size_t DynamicMemoryUsage() const
Definition
disconnected_transactions.cpp:44
DisconnectedBlockTransactions::LimitMemoryUsage
std::vector< CTransactionRef > LimitMemoryUsage()
Trim the earliest-added entries until we are within memory bounds.
Definition
disconnected_transactions.cpp:31
DisconnectedBlockTransactions::AddTransactionsFromBlock
std::vector< CTransactionRef > AddTransactionsFromBlock(const std::vector< CTransactionRef > &vtx)
Add transactions from the block, iterating through vtx in reverse order.
Definition
disconnected_transactions.cpp:49
DisconnectedBlockTransactions::size
size_t size() const
Definition
disconnected_transactions.h:71
DisconnectedBlockTransactions::m_max_mem_usage
const size_t m_max_mem_usage
Definition
disconnected_transactions.h:43
DisconnectedBlockTransactions::queuedTx
std::list< CTransactionRef > queuedTx
Definition
disconnected_transactions.h:44
MAX_DISCONNECTED_TX_POOL_BYTES
static const unsigned int MAX_DISCONNECTED_TX_POOL_BYTES
Maximum bytes for transactions to store for processing during reorg.
Definition
disconnected_transactions.h:18
hasher.h
transaction.h
Generated on
for Bitcoin Core by
1.17.0