wallet: Make vpwallets usage thread safe
This commit is contained in:
parent
476cb35551
commit
e2f58f421b
1 changed files with 7 additions and 1 deletions
|
@ -34,10 +34,12 @@
|
|||
|
||||
#include <boost/algorithm/string/replace.hpp>
|
||||
|
||||
static std::vector<CWallet*> vpwallets;
|
||||
static CCriticalSection cs_wallets;
|
||||
static std::vector<CWallet*> vpwallets GUARDED_BY(cs_wallets);
|
||||
|
||||
bool AddWallet(CWallet* wallet)
|
||||
{
|
||||
LOCK(cs_wallets);
|
||||
assert(wallet);
|
||||
std::vector<CWallet*>::const_iterator i = std::find(vpwallets.begin(), vpwallets.end(), wallet);
|
||||
if (i != vpwallets.end()) return false;
|
||||
|
@ -47,6 +49,7 @@ bool AddWallet(CWallet* wallet)
|
|||
|
||||
bool RemoveWallet(CWallet* wallet)
|
||||
{
|
||||
LOCK(cs_wallets);
|
||||
assert(wallet);
|
||||
std::vector<CWallet*>::iterator i = std::find(vpwallets.begin(), vpwallets.end(), wallet);
|
||||
if (i == vpwallets.end()) return false;
|
||||
|
@ -56,16 +59,19 @@ bool RemoveWallet(CWallet* wallet)
|
|||
|
||||
bool HasWallets()
|
||||
{
|
||||
LOCK(cs_wallets);
|
||||
return !vpwallets.empty();
|
||||
}
|
||||
|
||||
std::vector<CWallet*> GetWallets()
|
||||
{
|
||||
LOCK(cs_wallets);
|
||||
return vpwallets;
|
||||
}
|
||||
|
||||
CWallet* GetWallet(const std::string& name)
|
||||
{
|
||||
LOCK(cs_wallets);
|
||||
for (CWallet* wallet : vpwallets) {
|
||||
if (wallet->GetName() == name) return wallet;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue