Coverage Report

Created: 2025-02-21 14:37

/root/bitcoin/src/kernel/mempool_limits.h
Line
Count
Source (jump to first uncovered line)
1
// Copyright (c) 2022 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
#ifndef BITCOIN_KERNEL_MEMPOOL_LIMITS_H
5
#define BITCOIN_KERNEL_MEMPOOL_LIMITS_H
6
7
#include <policy/policy.h>
8
9
#include <cstdint>
10
11
namespace kernel {
12
/**
13
 * Options struct containing limit options for a CTxMemPool. Default constructor
14
 * populates the struct with sane default values which can be modified.
15
 *
16
 * Most of the time, this struct should be referenced as CTxMemPool::Limits.
17
 */
18
struct MemPoolLimits {
19
    //! The maximum allowed number of transactions in a package including the entry and its ancestors.
20
    int64_t ancestor_count{DEFAULT_ANCESTOR_LIMIT};
21
    //! The maximum allowed size in virtual bytes of an entry and its ancestors within a package.
22
    int64_t ancestor_size_vbytes{DEFAULT_ANCESTOR_SIZE_LIMIT_KVB * 1'000};
23
    //! The maximum allowed number of transactions in a package including the entry and its descendants.
24
    int64_t descendant_count{DEFAULT_DESCENDANT_LIMIT};
25
    //! The maximum allowed size in virtual bytes of an entry and its descendants within a package.
26
    int64_t descendant_size_vbytes{DEFAULT_DESCENDANT_SIZE_LIMIT_KVB * 1'000};
27
28
    /**
29
     * @return MemPoolLimits with all the limits set to the maximum
30
     */
31
    static constexpr MemPoolLimits NoLimits()
32
0
    {
33
0
        int64_t no_limit{std::numeric_limits<int64_t>::max()};
34
0
        return {no_limit, no_limit, no_limit, no_limit};
35
0
    }
36
};
37
} // namespace kernel
38
39
#endif // BITCOIN_KERNEL_MEMPOOL_LIMITS_H