LCOV - code coverage report
Current view: top level - src/coinjoin - options.cpp (source / functions) Hit Total Coverage
Test: total_coverage.info Lines: 41 53 77.4 %
Date: 2026-06-25 07:23:43 Functions: 7 10 70.0 %

          Line data    Source code
       1             : // Copyright (c) 2021-2025 The Dash Core developers
       2             : // Distributed under the MIT/X11 software license, see the accompanying
       3             : // file COPYING or http://www.opensource.org/licenses/mit-license.php.
       4             : 
       5             : #include <coinjoin/options.h>
       6             : 
       7             : #include <util/system.h>
       8             : #include <univalue.h>
       9             : 
      10             : #include <cassert>
      11             : 
      12             : CCoinJoinClientOptions* CCoinJoinClientOptions::_instance{nullptr};
      13             : std::once_flag CCoinJoinClientOptions::onceFlag;
      14             : 
      15      106663 : CCoinJoinClientOptions& CCoinJoinClientOptions::Get()
      16             : {
      17      106663 :     std::call_once(onceFlag, CCoinJoinClientOptions::Init);
      18      106663 :     assert(CCoinJoinClientOptions::_instance);
      19      106663 :     return *CCoinJoinClientOptions::_instance;
      20             : }
      21             : 
      22        8200 : void CCoinJoinClientOptions::SetEnabled(bool fEnabled)
      23             : {
      24        8200 :     CCoinJoinClientOptions& options = CCoinJoinClientOptions::Get();
      25        8200 :     options.fEnableCoinJoin = fEnabled;
      26        8200 : }
      27             : 
      28           2 : void CCoinJoinClientOptions::SetMultiSessionEnabled(bool fEnabled)
      29             : {
      30           2 :     CCoinJoinClientOptions& options = CCoinJoinClientOptions::Get();
      31           2 :     options.fCoinJoinMultiSession = fEnabled;
      32           2 : }
      33             : 
      34           0 : void CCoinJoinClientOptions::SetSessions(int sessions)
      35             : {
      36           0 :     CCoinJoinClientOptions& options = CCoinJoinClientOptions::Get();
      37           0 :     options.nCoinJoinSessions = sessions;
      38           0 : }
      39             : 
      40           7 : void CCoinJoinClientOptions::SetRounds(int nRounds)
      41             : {
      42           7 :     CCoinJoinClientOptions& options = CCoinJoinClientOptions::Get();
      43           7 :     options.nCoinJoinRounds = nRounds;
      44           7 : }
      45             : 
      46           9 : void CCoinJoinClientOptions::SetAmount(CAmount amount)
      47             : {
      48           9 :     CCoinJoinClientOptions& options = CCoinJoinClientOptions::Get();
      49           9 :     options.nCoinJoinAmount = amount;
      50           9 : }
      51             : 
      52           0 : void CCoinJoinClientOptions::SetDenomsGoal(int denoms_goal)
      53             : {
      54           0 :     CCoinJoinClientOptions& options = CCoinJoinClientOptions::Get();
      55           0 :     options.nCoinJoinDenomsGoal = denoms_goal;
      56           0 : }
      57             : 
      58           0 : void CCoinJoinClientOptions::SetDenomsHardCap(int denoms_hardcap)
      59             : {
      60           0 :     CCoinJoinClientOptions& options = CCoinJoinClientOptions::Get();
      61           0 :     options.nCoinJoinDenomsHardCap = denoms_hardcap;
      62           0 : }
      63             : 
      64        1483 : void CCoinJoinClientOptions::Init()
      65             : {
      66        1483 :     assert(!CCoinJoinClientOptions::_instance);
      67             :     static CCoinJoinClientOptions instance;
      68        1483 :     instance.fCoinJoinMultiSession = gArgs.GetBoolArg("-coinjoinmultisession", DEFAULT_COINJOIN_MULTISESSION);
      69        1483 :     instance.nCoinJoinSessions = std::min(std::max((int)gArgs.GetIntArg("-coinjoinsessions", DEFAULT_COINJOIN_SESSIONS), MIN_COINJOIN_SESSIONS), MAX_COINJOIN_SESSIONS);
      70        1483 :     instance.nCoinJoinRounds = std::min(std::max((int)gArgs.GetIntArg("-coinjoinrounds", DEFAULT_COINJOIN_ROUNDS), MIN_COINJOIN_ROUNDS), MAX_COINJOIN_ROUNDS);
      71        1483 :     instance.nCoinJoinAmount = std::min(std::max((int)gArgs.GetIntArg("-coinjoinamount", DEFAULT_COINJOIN_AMOUNT), MIN_COINJOIN_AMOUNT), MAX_COINJOIN_AMOUNT);
      72        1483 :     instance.nCoinJoinDenomsGoal = std::min(std::max((int)gArgs.GetIntArg("-coinjoindenomsgoal", DEFAULT_COINJOIN_DENOMS_GOAL), MIN_COINJOIN_DENOMS_GOAL), MAX_COINJOIN_DENOMS_GOAL);
      73        1483 :     instance.nCoinJoinDenomsHardCap = std::min(std::max((int)gArgs.GetIntArg("-coinjoindenomshardcap", DEFAULT_COINJOIN_DENOMS_HARDCAP), MIN_COINJOIN_DENOMS_HARDCAP), MAX_COINJOIN_DENOMS_HARDCAP);
      74        1483 :     CCoinJoinClientOptions::_instance = &instance;
      75        1483 : }
      76             : 
      77          22 : void CCoinJoinClientOptions::GetJsonInfo(UniValue& obj)
      78             : {
      79          22 :     assert(obj.isObject());
      80          22 :     const CCoinJoinClientOptions& options = CCoinJoinClientOptions::Get();
      81          22 :     obj.pushKV("enabled", options.fEnableCoinJoin.load());
      82          22 :     obj.pushKV("multisession", options.fCoinJoinMultiSession.load());
      83          22 :     obj.pushKV("max_sessions", options.nCoinJoinSessions.load());
      84          22 :     obj.pushKV("max_rounds", options.nCoinJoinRounds.load());
      85          22 :     obj.pushKV("max_amount", options.nCoinJoinAmount.load());
      86          22 :     obj.pushKV("denoms_goal", options.nCoinJoinDenomsGoal.load());
      87          22 :     obj.pushKV("denoms_hardcap", options.nCoinJoinDenomsHardCap.load());
      88          22 : }

Generated by: LCOV version 1.16