Bitcoin ABC  0.26.3
P2P Digital Currency
config.h
Go to the documentation of this file.
1 // Copyright (c) 2017 Amaury SÉCHET
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_CONFIG_H
6 #define BITCOIN_CONFIG_H
7 
8 #include <consensus/amount.h>
9 #include <feerate.h>
10 
11 #include <cstdint>
12 #include <memory>
13 #include <string>
14 
15 class CChainParams;
16 
17 class Config {
18 public:
19  virtual bool SetMaxBlockSize(uint64_t maxBlockSize) = 0;
20  virtual uint64_t GetMaxBlockSize() const = 0;
21  virtual const CChainParams &GetChainParams() const = 0;
22  virtual void SetCashAddrEncoding(bool) = 0;
23  virtual bool UseCashAddrEncoding() const = 0;
24 
25  Config() = default;
26  Config(const Config &) = delete;
27  Config &operator=(const Config &) = delete;
28 };
29 
30 class GlobalConfig final : public Config {
31 public:
32  GlobalConfig();
33  bool SetMaxBlockSize(uint64_t maxBlockSize) override;
34  uint64_t GetMaxBlockSize() const override;
35  const CChainParams &GetChainParams() const override;
36  void SetCashAddrEncoding(bool) override;
37  bool UseCashAddrEncoding() const override;
38 
39 private:
41 
43  uint64_t nMaxBlockSize;
44 };
45 
46 // Dummy for subclassing in unittests
47 class DummyConfig : public Config {
48 public:
49  DummyConfig();
50  explicit DummyConfig(std::string net);
51  explicit DummyConfig(std::unique_ptr<CChainParams> chainParamsIn);
52  bool SetMaxBlockSize(uint64_t maxBlockSize) override { return false; }
53  uint64_t GetMaxBlockSize() const override { return 0; }
54 
55  void SetChainParams(std::string net);
56  const CChainParams &GetChainParams() const override { return *chainParams; }
57 
58  void SetCashAddrEncoding(bool) override {}
59  bool UseCashAddrEncoding() const override { return false; }
60 
61 private:
62  std::unique_ptr<CChainParams> chainParams;
63 };
64 
65 // Temporary woraround.
66 const Config &GetConfig();
67 
68 #endif // BITCOIN_CONFIG_H
CChainParams defines various tweakable parameters of a given instance of the Bitcoin system.
Definition: chainparams.h:74
Definition: config.h:17
virtual bool UseCashAddrEncoding() const =0
virtual uint64_t GetMaxBlockSize() const =0
Config()=default
Config & operator=(const Config &)=delete
Config(const Config &)=delete
virtual const CChainParams & GetChainParams() const =0
virtual bool SetMaxBlockSize(uint64_t maxBlockSize)=0
virtual void SetCashAddrEncoding(bool)=0
const CChainParams & GetChainParams() const override
Definition: config.h:56
std::unique_ptr< CChainParams > chainParams
Definition: config.h:62
void SetCashAddrEncoding(bool) override
Definition: config.h:58
uint64_t GetMaxBlockSize() const override
Definition: config.h:53
bool SetMaxBlockSize(uint64_t maxBlockSize) override
Definition: config.h:52
void SetChainParams(std::string net)
Definition: config.cpp:54
bool UseCashAddrEncoding() const override
Definition: config.h:59
DummyConfig()
Definition: config.cpp:45
bool UseCashAddrEncoding() const override
Definition: config.cpp:41
bool useCashAddr
Definition: config.h:40
bool SetMaxBlockSize(uint64_t maxBlockSize) override
Definition: config.cpp:13
uint64_t nMaxBlockSize
The largest block size this node will accept.
Definition: config.h:43
const CChainParams & GetChainParams() const override
Definition: config.cpp:28
void SetCashAddrEncoding(bool) override
Definition: config.cpp:38
uint64_t GetMaxBlockSize() const override
Definition: config.cpp:24
GlobalConfig()
Definition: config.cpp:10
const Config & GetConfig()
Definition: config.cpp:34