peerman_args.cpp raw
1 #include <node/peerman_args.h>
2
3 #include <common/args.h>
4 #include <net_processing.h>
5
6 #include <algorithm>
7 #include <limits>
8
9 namespace node {
10
11 void ApplyArgsManOptions(const ArgsManager& argsman, PeerManager::Options& options)
12 {
13 if (auto value{argsman.GetIntArg("-maxstaleoutbound")}) {
14 options.maxstaleoutbound = std::clamp<int64_t>(*value, 0, std::numeric_limits<unsigned int>::max());
15 }
16
17 if (auto value{argsman.GetBoolArg("-txreconciliation")}) options.reconcile_txs = *value;
18
19 if (auto value{argsman.GetIntArg("-maxorphantx")}) {
20 options.max_orphan_txs = uint32_t((std::clamp<int64_t>(*value, 0, std::numeric_limits<uint32_t>::max())));
21 }
22
23 if (auto value{argsman.GetIntArg("-blockreconstructionextratxn")}) {
24 options.max_extra_txs = uint32_t((std::clamp<int64_t>(*value, 0, std::numeric_limits<uint32_t>::max())));
25 }
26
27 if (auto value{argsman.GetFixedPointArg("-blockreconstructionextratxnsize", /*decimals=*/ 4)}) {
28 // NOTE: GetFixedPointArg only allows values up to 18 digits
29 options.max_extra_txs_size = 100 * (size_t)std::clamp<int64_t>(*value, 0, std::numeric_limits<size_t>::max() / 100);
30 }
31
32 if (auto value{argsman.GetBoolArg("-capturemessages")}) options.capture_messages = *value;
33
34 if (auto value{argsman.GetBoolArg("-blocksonly")}) options.ignore_incoming_txs = *value;
35 }
36
37 } // namespace node
38
39