Bitcoin Core
31.0.0
P2P Digital Currency
Loading...
Searching...
No Matches
src
wallet
context.h
Go to the documentation of this file.
1
// Copyright (c) 2020-present The Bitcoin Core developers
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_WALLET_CONTEXT_H
6
#define BITCOIN_WALLET_CONTEXT_H
7
8
#include <
sync.h
>
9
10
#include <functional>
11
#include <list>
12
#include <memory>
13
#include <vector>
14
15
class
ArgsManager
;
16
class
CScheduler
;
17
namespace
interfaces
{
18
class
Chain
;
19
class
Wallet
;
20
}
// namespace interfaces
21
22
namespace
wallet
{
23
class
CWallet
;
24
using
LoadWalletFn
= std::function<void(std::unique_ptr<interfaces::Wallet>
wallet
)>;
25
36
struct
WalletContext
{
37
interfaces::Chain
*
chain
{
nullptr
};
38
CScheduler
*
scheduler
{
nullptr
};
39
ArgsManager
*
args
{
nullptr
};
// Currently a raw pointer because the memory is not managed by this struct
40
// It is unsafe to lock this after locking a CWallet::cs_wallet mutex because
41
// this could introduce inconsistent lock ordering and cause deadlocks.
42
Mutex
wallets_mutex
;
43
std::vector<std::shared_ptr<CWallet>> wallets
GUARDED_BY
(
wallets_mutex
);
44
std::list<LoadWalletFn> wallet_load_fns
GUARDED_BY
(
wallets_mutex
);
45
49
WalletContext
();
50
~WalletContext
();
51
};
52
}
// namespace wallet
53
54
#endif
// BITCOIN_WALLET_CONTEXT_H
ArgsManager
Definition
args.h:103
CScheduler
Simple class for background tasks that should be run periodically or once "after a while".
Definition
scheduler.h:40
interfaces::Chain
Definition
chain.h:118
interfaces::Wallet
Interface for accessing a wallet.
Definition
wallet.h:66
wallet::CWallet
A CWallet maintains a set of transactions and balances, and provides the ability to create new transa...
Definition
wallet.h:310
interfaces
Definition
interfaces.cpp:41
wallet
Definition
wallet_balance.cpp:26
wallet::LoadWalletFn
std::function< void(std::unique_ptr< interfaces::Wallet > wallet)> LoadWalletFn
Definition
context.h:24
wallet::WalletContext::~WalletContext
~WalletContext()
wallet::WalletContext::chain
interfaces::Chain * chain
Definition
context.h:37
wallet::WalletContext::GUARDED_BY
std::vector< std::shared_ptr< CWallet > > wallets GUARDED_BY(wallets_mutex)
wallet::WalletContext::wallets_mutex
Mutex wallets_mutex
Definition
context.h:42
wallet::WalletContext::WalletContext
WalletContext()
wallet::WalletContext::scheduler
CScheduler * scheduler
Definition
context.h:38
wallet::WalletContext::args
ArgsManager * args
Definition
context.h:39
wallet::WalletContext::GUARDED_BY
std::list< LoadWalletFn > wallet_load_fns GUARDED_BY(wallets_mutex)
sync.h
Mutex
AnnotatedMixin< std::mutex > Mutex
Wrapped mutex: supports waiting but not recursive locking.
Definition
sync.h:123
Generated on
for Bitcoin Core by
1.16.1