diff options
author | Carl Dong <contact@carldong.me> | 2022-05-25 14:31:54 -0400 |
---|---|---|
committer | Carl Dong <contact@carldong.me> | 2022-06-02 11:40:03 -0400 |
commit | fed085a1a4cd2787202752b6a0d98e42dce97f09 (patch) | |
tree | f5f85da84e9aee2a1e7fd6ac52edf70dfa90fcbd /src/kernel/context.h | |
parent | 7d03feef8156ef37a4efa01dc591467bc7d957bf (diff) |
init: Initialize globals with kernel::Context's life
...instead of explicitly calling init::{Set,Unset}Globals.
Cool thing about this is that in both the testing and bitcoin-chainstate
codepaths, we no longer need to explicitly unset globals. The
kernel::Context goes out of scope and the globals are unset
"automatically".
Also construct kernel::Context outside of AppInitSanityChecks()
Diffstat (limited to 'src/kernel/context.h')
-rw-r--r-- | src/kernel/context.h | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/src/kernel/context.h b/src/kernel/context.h index e304dcb006..0a08511564 100644 --- a/src/kernel/context.h +++ b/src/kernel/context.h @@ -5,6 +5,10 @@ #ifndef BITCOIN_KERNEL_CONTEXT_H #define BITCOIN_KERNEL_CONTEXT_H +#include <memory> + +class ECCVerifyHandle; + namespace kernel { //! Context struct holding the kernel library's logically global state, and //! passed to external libbitcoin_kernel functions which need access to this @@ -14,6 +18,13 @@ namespace kernel { //! State stored directly in this struct should be simple. More complex state //! should be stored to std::unique_ptr members pointing to opaque types. struct Context { + std::unique_ptr<ECCVerifyHandle> ecc_verify_handle; + + //! Declare default constructor and destructor that are not inline, so code + //! instantiating the kernel::Context struct doesn't need to #include class + //! definitions for all the unique_ptr members. + Context(); + ~Context(); }; } // namespace kernel |