kernel: Remove dependency on CScheduler
By defining a virtual interface class for the scheduler client, users of the kernel can now define their own event consuming infrastructure, without having to spawn threads or rely on the scheduler design.
Removing CScheduler
also allows removing the thread and exception modules from the kernel library.
To make the CMainSignals
class easier to use from a kernel library perspective, remove its global instantiation and adopt RAII practices.
Renames CMainSignals
to ValidationSignals
, which more accurately describes its purpose and scope.
Also make the ValidationSignals
in the ChainstateManager
and CTxMemPool` optional. This could be useful in the future for using or testing these classes without having to instantiate any form of signal handling.
This PR is part of the libbitcoinkernel project. It improves the kernel API and removes two modules from the kernel library.