dash/src/init.h

77 lines
2.5 KiB
C
Raw Normal View History

2010-07-14 17:54:31 +02:00
// Copyright (c) 2009-2010 Satoshi Nakamoto
// Copyright (c) 2009-2015 The Bitcoin Core developers
// Distributed under the MIT software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
#ifndef BITCOIN_INIT_H
#define BITCOIN_INIT_H
2010-07-14 17:54:31 +02:00
Merge bitcoin#10762: [wallet] Remove Wallet dependencies from init.cpp (#3412) * Merge #10762: [wallet] Remove Wallet dependencies from init.cpp c7ec524 [wallet] Add dummy wallet init class (John Newbery) 49baa4a [wallet] Use global g_wallet_init_interface to init/destroy the wallet. (John Newbery) caaf972 [wallet] Create wallet init interface. (John Newbery) 5fb5421 [wallet] Move wallet init functions into WalletInit class. (John Newbery) Pull request description: This continues the work of #7965. This PR, along with several others, would remove the remaining dependencies from libbitcoin_server.a on libbitcoin_wallet.a. To create the interface, I've just translated all the old init.cpp wallet function calls into an interface class. I've not done any thinking about whether it makes sense to change that interface by combining/splitting those calls. This is a purely internal interface, so there's no problem in changing it later. Tree-SHA512: 32ea57615229c33fd1a7f2f29ebc11bf30337685f7211baffa899823ef74b65dcbf068289c557a161c5afffb51fdc38a2ee8180720371f64d433b12b0615cf3f Signed-off-by: Pasta <pasta@dashboost.org> # Conflicts: # src/dashd.cpp # src/init.cpp * a couple of fixes Signed-off-by: Pasta <pasta@dashboost.org> * move privatesend launch options help into wallet/init.cpp Signed-off-by: Pasta <pasta@dashboost.org> * remove ENABLE_WALLET for AutoLockMasternodeCollaterals Signed-off-by: Pasta <pasta@dashboost.org> * move a wallet param interaction into wallet/init.cpp Signed-off-by: Pasta <pasta@dashboost.org> * move PrivateSend init to wallet/init.h Signed-off-by: Pasta <pasta@dashboost.org> * move privatesend scheduler into wallet.cpp Signed-off-by: Pasta <pasta@dashboost.org> * remove unneeded import Signed-off-by: Pasta <pasta@dashboost.org> * move KeePass init and InitAutoBackup into wallet/init.cpp Signed-off-by: Pasta <pasta@dashboost.org> * Fix 10762 Changes: - Should backup wallets before trying to verify them. This is because `-salvagewallet` is very dangerous and can actually corrupt wallets making them irreparably broken. - No reason to make `schedulePrivateSendClientMaintenance` a part of the wallet (interface) because `privateSendClient` is a global object not tied to the wallet directly atm. - Should not run client-side mixing on masternodes. - Fix `InitAutoBackup` signature in `DummyWalletInit`. * remove boost dependancy in wallet/init.cpp Signed-off-by: pasta <pasta@dashboost.org> Co-authored-by: Wladimir J. van der Laan <laanwj@gmail.com> Co-authored-by: UdjinM6 <UdjinM6@users.noreply.github.com>
2020-04-18 11:59:40 +02:00
#include <memory>
#include <string>
class CScheduler;
class CWallet;
2012-04-15 22:10:54 +02:00
Merge bitcoin#10762: [wallet] Remove Wallet dependencies from init.cpp (#3412) * Merge #10762: [wallet] Remove Wallet dependencies from init.cpp c7ec524 [wallet] Add dummy wallet init class (John Newbery) 49baa4a [wallet] Use global g_wallet_init_interface to init/destroy the wallet. (John Newbery) caaf972 [wallet] Create wallet init interface. (John Newbery) 5fb5421 [wallet] Move wallet init functions into WalletInit class. (John Newbery) Pull request description: This continues the work of #7965. This PR, along with several others, would remove the remaining dependencies from libbitcoin_server.a on libbitcoin_wallet.a. To create the interface, I've just translated all the old init.cpp wallet function calls into an interface class. I've not done any thinking about whether it makes sense to change that interface by combining/splitting those calls. This is a purely internal interface, so there's no problem in changing it later. Tree-SHA512: 32ea57615229c33fd1a7f2f29ebc11bf30337685f7211baffa899823ef74b65dcbf068289c557a161c5afffb51fdc38a2ee8180720371f64d433b12b0615cf3f Signed-off-by: Pasta <pasta@dashboost.org> # Conflicts: # src/dashd.cpp # src/init.cpp * a couple of fixes Signed-off-by: Pasta <pasta@dashboost.org> * move privatesend launch options help into wallet/init.cpp Signed-off-by: Pasta <pasta@dashboost.org> * remove ENABLE_WALLET for AutoLockMasternodeCollaterals Signed-off-by: Pasta <pasta@dashboost.org> * move a wallet param interaction into wallet/init.cpp Signed-off-by: Pasta <pasta@dashboost.org> * move PrivateSend init to wallet/init.h Signed-off-by: Pasta <pasta@dashboost.org> * move privatesend scheduler into wallet.cpp Signed-off-by: Pasta <pasta@dashboost.org> * remove unneeded import Signed-off-by: Pasta <pasta@dashboost.org> * move KeePass init and InitAutoBackup into wallet/init.cpp Signed-off-by: Pasta <pasta@dashboost.org> * Fix 10762 Changes: - Should backup wallets before trying to verify them. This is because `-salvagewallet` is very dangerous and can actually corrupt wallets making them irreparably broken. - No reason to make `schedulePrivateSendClientMaintenance` a part of the wallet (interface) because `privateSendClient` is a global object not tied to the wallet directly atm. - Should not run client-side mixing on masternodes. - Fix `InitAutoBackup` signature in `DummyWalletInit`. * remove boost dependancy in wallet/init.cpp Signed-off-by: pasta <pasta@dashboost.org> Co-authored-by: Wladimir J. van der Laan <laanwj@gmail.com> Co-authored-by: UdjinM6 <UdjinM6@users.noreply.github.com>
2020-04-18 11:59:40 +02:00
class WalletInitInterface;
extern const WalletInitInterface& g_wallet_init_interface;
Merge bitcoin#10762: [wallet] Remove Wallet dependencies from init.cpp (#3412) * Merge #10762: [wallet] Remove Wallet dependencies from init.cpp c7ec524 [wallet] Add dummy wallet init class (John Newbery) 49baa4a [wallet] Use global g_wallet_init_interface to init/destroy the wallet. (John Newbery) caaf972 [wallet] Create wallet init interface. (John Newbery) 5fb5421 [wallet] Move wallet init functions into WalletInit class. (John Newbery) Pull request description: This continues the work of #7965. This PR, along with several others, would remove the remaining dependencies from libbitcoin_server.a on libbitcoin_wallet.a. To create the interface, I've just translated all the old init.cpp wallet function calls into an interface class. I've not done any thinking about whether it makes sense to change that interface by combining/splitting those calls. This is a purely internal interface, so there's no problem in changing it later. Tree-SHA512: 32ea57615229c33fd1a7f2f29ebc11bf30337685f7211baffa899823ef74b65dcbf068289c557a161c5afffb51fdc38a2ee8180720371f64d433b12b0615cf3f Signed-off-by: Pasta <pasta@dashboost.org> # Conflicts: # src/dashd.cpp # src/init.cpp * a couple of fixes Signed-off-by: Pasta <pasta@dashboost.org> * move privatesend launch options help into wallet/init.cpp Signed-off-by: Pasta <pasta@dashboost.org> * remove ENABLE_WALLET for AutoLockMasternodeCollaterals Signed-off-by: Pasta <pasta@dashboost.org> * move a wallet param interaction into wallet/init.cpp Signed-off-by: Pasta <pasta@dashboost.org> * move PrivateSend init to wallet/init.h Signed-off-by: Pasta <pasta@dashboost.org> * move privatesend scheduler into wallet.cpp Signed-off-by: Pasta <pasta@dashboost.org> * remove unneeded import Signed-off-by: Pasta <pasta@dashboost.org> * move KeePass init and InitAutoBackup into wallet/init.cpp Signed-off-by: Pasta <pasta@dashboost.org> * Fix 10762 Changes: - Should backup wallets before trying to verify them. This is because `-salvagewallet` is very dangerous and can actually corrupt wallets making them irreparably broken. - No reason to make `schedulePrivateSendClientMaintenance` a part of the wallet (interface) because `privateSendClient` is a global object not tied to the wallet directly atm. - Should not run client-side mixing on masternodes. - Fix `InitAutoBackup` signature in `DummyWalletInit`. * remove boost dependancy in wallet/init.cpp Signed-off-by: pasta <pasta@dashboost.org> Co-authored-by: Wladimir J. van der Laan <laanwj@gmail.com> Co-authored-by: UdjinM6 <UdjinM6@users.noreply.github.com>
2020-04-18 11:59:40 +02:00
namespace boost
{
class thread_group;
} // namespace boost
void StartShutdown();
void StartRestart();
bool ShutdownRequested();
evhttpd implementation - *Replace usage of boost::asio with [libevent2](http://libevent.org/)*. boost::asio is not part of C++11, so unlike other boost there is no forwards-compatibility reason to stick with it. Together with #4738 (convert json_spirit to UniValue), this rids Bitcoin Core of the worst offenders with regard to compile-time slowness. - *Replace spit-and-duct-tape http server with evhttp*. Front-end http handling is handled by libevent, a work queue (with configurable depth and parallelism) is used to handle application requests. - *Wrap HTTP request in C++ class*; this makes the application code mostly HTTP-server-neutral - *Refactor RPC to move all http-specific code to a separate file*. Theoreticaly this can allow building without HTTP server but with another RPC backend, e.g. Qt's debug console (currently not implemented) or future RPC mechanisms people may want to use. - *HTTP dispatch mechanism*; services (e.g., RPC, REST) register which URL paths they want to handle. By using a proven, high-performance asynchronous networking library (also used by Tor) and HTTP server, problems such as #5674, #5655, #344 should be avoided. What works? bitcoind, bitcoin-cli, bitcoin-qt. Unit tests and RPC/REST tests pass. The aim for now is everything but SSL support. Configuration options: - `-rpcthreads`: repurposed as "number of work handler threads". Still defaults to 4. - `-rpcworkqueue`: maximum depth of work queue. When this is reached, new requests will return a 500 Internal Error. - `-rpctimeout`: inactivity time, in seconds, after which to disconnect a client. - `-debug=http`: low-level http activity logging
2015-01-23 07:53:17 +01:00
/** Interrupt threads */
void Interrupt();
2013-03-09 18:02:57 +01:00
void Shutdown();
//!Initialize the logging infrastructure
void InitLogging();
//!Parameter interaction: change current parameters depending on various rules
void InitParameterInteraction();
/** Initialize Dash Core: Basic context setup.
* @note This can be done before daemonization. Do not call Shutdown() if this function fails.
* @pre Parameters should be parsed and config file should be read.
*/
bool AppInitBasicSetup();
/**
* Initialization: parameter interaction.
* @note This can be done before daemonization. Do not call Shutdown() if this function fails.
* @pre Parameters should be parsed and config file should be read, AppInitBasicSetup should have been called.
*/
bool AppInitParameterInteraction();
/**
* Initialization sanity checks: ecc init, sanity checks, dir lock.
* @note This can be done before daemonization. Do not call Shutdown() if this function fails.
* @pre Parameters should be parsed and config file should be read, AppInitParameterInteraction should have been called.
*/
bool AppInitSanityChecks();
/**
* Lock Dash Core data directory.
* @note This should only be done after daemonization. Do not call Shutdown() if this function fails.
* @pre Parameters should be parsed and config file should be read, AppInitSanityChecks should have been called.
*/
bool AppInitLockDataDirectory();
/**
* Dash Core main initialization.
* @note This should only be done after daemonization. Call Shutdown() if this function fails.
* @pre Parameters should be parsed and config file should be read, AppInitLockDataDirectory should have been called.
*/
bool AppInitMain();
void PrepareShutdown();
/** The help message mode determines what help message to show */
scripted-diff: Convert 11 enums into scoped enums (C++11) (merge #10742) -BEGIN VERIFY SCRIPT- sed -i 's/enum DBErrors/enum class DBErrors/g' src/wallet/walletdb.h git grep -l DB_ | xargs sed -i 's/DB_\(LOAD_OK\|CORRUPT\|NONCRITICAL_ERROR\|TOO_NEW\|LOAD_FAIL\|NEED_REWRITE\)/DBErrors::\1/g' sed -i 's/^ DBErrors::/ /g' src/wallet/walletdb.h sed -i 's/enum VerifyResult/enum class VerifyResult/g' src/wallet/db.h sed -i 's/\(VERIFY_OK\|RECOVER_OK\|RECOVER_FAIL\)/VerifyResult::\1/g' src/wallet/db.cpp sed -i 's/enum ThresholdState/enum class ThresholdState/g' src/versionbits.h git grep -l THRESHOLD_ | xargs sed -i 's/THRESHOLD_\(DEFINED\|STARTED\|LOCKED_IN\|ACTIVE\|FAILED\)/ThresholdState::\1/g' sed -i 's/^ ThresholdState::/ /g' src/versionbits.h sed -i 's/enum SigVersion/enum class SigVersion/g' src/script/interpreter.h git grep -l SIGVERSION_ | xargs sed -i 's/SIGVERSION_\(BASE\|WITNESS_V0\)/SigVersion::\1/g' sed -i 's/^ SigVersion::/ /g' src/script/interpreter.h sed -i 's/enum RetFormat {/enum class RetFormat {/g' src/rest.cpp sed -i 's/RF_\(UNDEF\|BINARY\|HEX\|JSON\)/RetFormat::\1/g' src/rest.cpp sed -i 's/^ RetFormat::/ /g' src/rest.cpp sed -i 's/enum HelpMessageMode {/enum class HelpMessageMode {/g' src/init.h git grep -l HMM_ | xargs sed -i 's/HMM_BITCOIN/HelpMessageMode::BITCOIN/g' sed -i 's/^ HelpMessageMode::/ /g' src/init.h sed -i 's/enum FeeEstimateHorizon/enum class FeeEstimateHorizon/g' src/policy/fees.h sed -i 's/enum BlockSource {/enum class BlockSource {/g' src/qt/clientmodel.h git grep -l BLOCK_SOURCE_ | xargs sed -i 's/BLOCK_SOURCE_\(NONE\|REINDEX\|DISK\|NETWORK\)/BlockSource::\1/g' sed -i 's/^ BlockSource::/ /g' src/qt/clientmodel.h sed -i 's/enum FlushStateMode {/enum class FlushStateMode {/g' src/validation.cpp sed -i 's/FLUSH_STATE_\(NONE\|IF_NEEDED\|PERIODIC\|ALWAYS\)/FlushStateMode::\1/g' src/validation.cpp sed -i 's/^ FlushStateMode::/ /g' src/validation.cpp -END VERIFY SCRIPT- Signed-off-by: pasta <pasta@dashboost.org>
2020-06-09 05:44:04 +02:00
enum class HelpMessageMode {
BITCOIND,
BITCOIN_QT
};
/** Help for options shared between UI and daemon (for -help) */
std::string HelpMessage(HelpMessageMode mode);
/** Returns licensing information (for -version) */
std::string LicenseInfo();
#endif // BITCOIN_INIT_H