mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-07-06 16:36:57 +02:00
Merge #19453: refactor: reduce DefaultRequestHandler memory allocations
f20b359bb9
cli: reduce DefaultRequestHandler memory allocations (Jon Atack) Pull request description: per https://github.com/bitcoin/bitcoin/pull/16439#discussion_r443957125. Simpler code, fewer allocations. No change of behavior. The code has good test coverage in `interface_bitcoin_cli.py`. ACKs for top commit: MarcoFalke: review ACKf20b359bb9
fjahr: Code review ACKf20b359
Tree-SHA512: 745eab44dfdcc485ca2bbc1db8b8d364cbd3cf94982e46e033745ce05ab617c15320ee55da7fb930d365f4d26b172049d5f5efcf0b6d3af5b0a28185bdb93ea8
This commit is contained in:
@ -516,8 +516,8 @@ static void ParseError(const UniValue& error, std::string& strPrint, int& nRet)
|
|||||||
*/
|
*/
|
||||||
static void GetWalletBalances(UniValue& result)
|
static void GetWalletBalances(UniValue& result)
|
||||||
{
|
{
|
||||||
std::unique_ptr<BaseRequestHandler> rh{MakeUnique<DefaultRequestHandler>()};
|
DefaultRequestHandler rh;
|
||||||
const UniValue listwallets = ConnectAndCallRPC(rh.get(), "listwallets", /* args=*/{});
|
const UniValue listwallets = ConnectAndCallRPC(&rh, "listwallets", /* args=*/{});
|
||||||
if (!find_value(listwallets, "error").isNull()) return;
|
if (!find_value(listwallets, "error").isNull()) return;
|
||||||
const UniValue& wallets = find_value(listwallets, "result");
|
const UniValue& wallets = find_value(listwallets, "result");
|
||||||
if (wallets.size() <= 1) return;
|
if (wallets.size() <= 1) return;
|
||||||
@ -525,7 +525,7 @@ static void GetWalletBalances(UniValue& result)
|
|||||||
UniValue balances(UniValue::VOBJ);
|
UniValue balances(UniValue::VOBJ);
|
||||||
for (const UniValue& wallet : wallets.getValues()) {
|
for (const UniValue& wallet : wallets.getValues()) {
|
||||||
const std::string wallet_name = wallet.get_str();
|
const std::string wallet_name = wallet.get_str();
|
||||||
const UniValue getbalances = ConnectAndCallRPC(rh.get(), "getbalances", /* args=*/{}, wallet_name);
|
const UniValue getbalances = ConnectAndCallRPC(&rh, "getbalances", /* args=*/{}, wallet_name);
|
||||||
const UniValue& balance = find_value(getbalances, "result")["mine"]["trusted"];
|
const UniValue& balance = find_value(getbalances, "result")["mine"]["trusted"];
|
||||||
balances.pushKV(wallet_name, balance);
|
balances.pushKV(wallet_name, balance);
|
||||||
}
|
}
|
||||||
@ -540,8 +540,8 @@ static UniValue GetNewAddress()
|
|||||||
{
|
{
|
||||||
Optional<std::string> wallet_name{};
|
Optional<std::string> wallet_name{};
|
||||||
if (gArgs.IsArgSet("-rpcwallet")) wallet_name = gArgs.GetArg("-rpcwallet", "");
|
if (gArgs.IsArgSet("-rpcwallet")) wallet_name = gArgs.GetArg("-rpcwallet", "");
|
||||||
std::unique_ptr<BaseRequestHandler> rh{MakeUnique<DefaultRequestHandler>()};
|
DefaultRequestHandler rh;
|
||||||
return ConnectAndCallRPC(rh.get(), "getnewaddress", /* args=*/{}, wallet_name);
|
return ConnectAndCallRPC(&rh, "getnewaddress", /* args=*/{}, wallet_name);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Reference in New Issue
Block a user