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