mirror of
https://github.com/ElementsProject/elements.git
synced 2026-08-14 12:43:40 +02:00
Merge 36f42e1bf4 into merged_master (Bitcoin PR #18037)
This commit is contained in:
commit
70819cbab4
13 changed files with 140 additions and 22 deletions
27
src/init.cpp
27
src/init.cpp
|
|
@ -160,8 +160,6 @@ NODISCARD static bool CreatePidFile()
|
|||
static std::unique_ptr<ECCVerifyHandle> globalVerifyHandle;
|
||||
|
||||
static boost::thread_group threadGroup;
|
||||
static CScheduler scheduler;
|
||||
static CScheduler reverification_scheduler;
|
||||
|
||||
void Interrupt(NodeContext& node)
|
||||
{
|
||||
|
|
@ -299,6 +297,8 @@ void Shutdown(NodeContext& node)
|
|||
globalVerifyHandle.reset();
|
||||
ECC_Stop();
|
||||
if (node.mempool) node.mempool = nullptr;
|
||||
node.scheduler.reset();
|
||||
node.reverification_scheduler.reset();
|
||||
LogPrintf("%s: done\n", __func__);
|
||||
}
|
||||
|
||||
|
|
@ -1321,16 +1321,21 @@ bool AppInitMain(NodeContext& node)
|
|||
}
|
||||
}
|
||||
|
||||
assert(!node.scheduler);
|
||||
node.scheduler = MakeUnique<CScheduler>();
|
||||
assert(!node.reverification_scheduler);
|
||||
node.reverification_scheduler = MakeUnique<CScheduler>();
|
||||
|
||||
// Start the lightweight task scheduler thread
|
||||
CScheduler::Function serviceLoop = std::bind(&CScheduler::serviceQueue, &scheduler);
|
||||
CScheduler::Function serviceLoop = [&node]{ node.scheduler->serviceQueue(); };
|
||||
threadGroup.create_thread(std::bind(&TraceThread<CScheduler::Function>, "scheduler", serviceLoop));
|
||||
|
||||
// Gather some entropy once per minute.
|
||||
scheduler.scheduleEvery([]{
|
||||
node.scheduler->scheduleEvery([]{
|
||||
RandAddPeriodic();
|
||||
}, 60000);
|
||||
|
||||
GetMainSignals().RegisterBackgroundSignalScheduler(scheduler);
|
||||
GetMainSignals().RegisterBackgroundSignalScheduler(*node.scheduler);
|
||||
|
||||
// Create client interfaces for wallets that are supposed to be loaded
|
||||
// according to -wallet and -disablewallet options. This only constructs
|
||||
|
|
@ -1383,7 +1388,7 @@ bool AppInitMain(NodeContext& node)
|
|||
assert(!node.connman);
|
||||
node.connman = std::unique_ptr<CConnman>(new CConnman(GetRand(std::numeric_limits<uint64_t>::max()), GetRand(std::numeric_limits<uint64_t>::max())));
|
||||
|
||||
node.peer_logic.reset(new PeerLogicValidation(node.connman.get(), node.banman.get(), scheduler));
|
||||
node.peer_logic.reset(new PeerLogicValidation(node.connman.get(), node.banman.get(), *node.scheduler));
|
||||
RegisterValidationInterface(node.peer_logic.get());
|
||||
|
||||
// sanitize comments per BIP-0014, format user agent and check total size
|
||||
|
|
@ -1875,7 +1880,7 @@ bool AppInitMain(NodeContext& node)
|
|||
connOptions.m_specified_outgoing = connect;
|
||||
}
|
||||
}
|
||||
if (!node.connman->Start(scheduler, connOptions)) {
|
||||
if (!node.connman->Start(*node.scheduler, connOptions)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
@ -1926,23 +1931,23 @@ bool AppInitMain(NodeContext& node)
|
|||
}
|
||||
|
||||
// Start the lightweight block re-evaluation scheduler thread
|
||||
CScheduler::Function reevaluationLoop = std::bind(&CScheduler::serviceQueue, &reverification_scheduler);
|
||||
CScheduler::Function reevaluationLoop = [&node]{ node.reverification_scheduler->serviceQueue(); };
|
||||
threadGroup.create_thread(std::bind(&TraceThread<CScheduler::Function>, "reevaluation_scheduler", reevaluationLoop));
|
||||
|
||||
CScheduler::Function f2 = boost::bind(&MainchainRPCCheck, false);
|
||||
unsigned int check_rpc_every = gArgs.GetArg("-recheckpeginblockinterval", 120) * 1000;
|
||||
if (check_rpc_every) {
|
||||
reverification_scheduler.scheduleEvery(f2, check_rpc_every);
|
||||
node.reverification_scheduler->scheduleEvery(f2, check_rpc_every);
|
||||
}
|
||||
|
||||
uiInterface.InitMessage(_("Done loading").translated);
|
||||
|
||||
for (const auto& client : node.chain_clients) {
|
||||
client->start(scheduler);
|
||||
client->start(*node.scheduler);
|
||||
}
|
||||
|
||||
BanMan* banman = node.banman.get();
|
||||
scheduler.scheduleEvery([banman]{
|
||||
node.scheduler->scheduleEvery([banman]{
|
||||
banman->DumpBanlist();
|
||||
}, DUMP_BANS_INTERVAL * 1000);
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue