Skip to content

Commit 82fd402

Browse files
committed
refactor: promote some -netinfo localvars to class members
1 parent 5133fab commit 82fd402

File tree

1 file changed

+24
-22
lines changed

1 file changed

+24
-22
lines changed

src/bitcoin-cli.cpp

Lines changed: 24 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -300,6 +300,9 @@ class NetinfoRequestHandler : public BaseRequestHandler
300300
bool DetailsRequested() const { return m_details_level > 0 && m_details_level < 5; }
301301
bool IsAddressSelected() const { return m_details_level == 2 || m_details_level == 4; }
302302
bool IsVersionSelected() const { return m_details_level == 3 || m_details_level == 4; }
303+
bool m_is_asmap_on{false};
304+
size_t m_max_addr_length{0};
305+
size_t m_max_id_length{2};
303306
struct Peer {
304307
int id;
305308
int mapped_as;
@@ -318,12 +321,15 @@ class NetinfoRequestHandler : public BaseRequestHandler
318321
bool is_outbound;
319322
bool operator<(const Peer& rhs) const { return std::tie(is_outbound, min_ping) < std::tie(rhs.is_outbound, rhs.min_ping); }
320323
};
324+
std::vector<Peer> m_peers;
321325
std::string ChainToString() const
322326
{
323327
if (gArgs.GetChainName() == CBaseChainParams::TESTNET) return " testnet";
324328
if (gArgs.GetChainName() == CBaseChainParams::REGTEST) return " regtest";
325329
return "";
326330
}
331+
const int64_t m_time_now{GetSystemTimeInSeconds()};
332+
327333
public:
328334
static constexpr int ID_PEERINFO = 0;
329335
static constexpr int ID_NETWORKINFO = 1;
@@ -354,12 +360,8 @@ class NetinfoRequestHandler : public BaseRequestHandler
354360
}
355361

356362
// Count peer connection totals, and if DetailsRequested(), store peer data in a vector of structs.
357-
const int64_t time_now{GetSystemTimeInSeconds()};
358363
int ipv4_i{0}, ipv6_i{0}, onion_i{0}, block_relay_i{0}, total_i{0}; // inbound conn counters
359364
int ipv4_o{0}, ipv6_o{0}, onion_o{0}, block_relay_o{0}, total_o{0}; // outbound conn counters
360-
size_t max_peer_id_length{2}, max_addr_length{0};
361-
bool is_asmap_on{false};
362-
std::vector<Peer> peers;
363365
const UniValue& getpeerinfo{batch[ID_PEERINFO]["result"]};
364366

365367
for (const UniValue& peer : getpeerinfo.getValues()) {
@@ -399,23 +401,23 @@ class NetinfoRequestHandler : public BaseRequestHandler
399401
const double ping{peer["pingtime"].isNull() ? -1 : peer["pingtime"].get_real()};
400402
const std::string addr{peer["addr"].get_str()};
401403
const std::string sub_version{peer["subver"].get_str()};
402-
peers.push_back({peer_id, mapped_as, version, conn_time, last_blck, last_recv, last_send, last_trxn, min_ping, ping, addr, network, sub_version, is_block_relay, !is_inbound});
403-
max_peer_id_length = std::max(ToString(peer_id).length(), max_peer_id_length);
404-
max_addr_length = std::max(addr.length() + 1, max_addr_length);
405-
is_asmap_on |= (mapped_as != 0);
404+
m_peers.push_back({peer_id, mapped_as, version, conn_time, last_blck, last_recv, last_send, last_trxn, min_ping, ping, addr, network, sub_version, is_block_relay, !is_inbound});
405+
m_max_id_length = std::max(ToString(peer_id).length(), m_max_id_length);
406+
m_max_addr_length = std::max(addr.length() + 1, m_max_addr_length);
407+
m_is_asmap_on |= (mapped_as != 0);
406408
}
407409
}
408410

409411
// Generate report header.
410412
std::string result{strprintf("%s %s%s - %i%s\n\n", PACKAGE_NAME, FormatFullVersion(), ChainToString(), networkinfo["protocolversion"].get_int(), networkinfo["subversion"].get_str())};
411413

412414
// Report detailed peer connections list sorted by direction and minimum ping time.
413-
if (DetailsRequested() && !peers.empty()) {
414-
std::sort(peers.begin(), peers.end());
415+
if (DetailsRequested() && !m_peers.empty()) {
416+
std::sort(m_peers.begin(), m_peers.end());
415417
result += "Peer connections sorted by direction and min ping\n<-> relay net mping ping send recv txn blk uptime ";
416-
if (is_asmap_on) result += " asmap ";
417-
result += strprintf("%*s %-*s%s\n", max_peer_id_length, "id", IsAddressSelected() ? max_addr_length : 0, IsAddressSelected() ? "address" : "", IsVersionSelected() ? "version" : "");
418-
for (const Peer& peer : peers) {
418+
if (m_is_asmap_on) result += " asmap ";
419+
result += strprintf("%*s %-*s%s\n", m_max_id_length, "id", IsAddressSelected() ? m_max_addr_length : 0, IsAddressSelected() ? "address" : "", IsVersionSelected() ? "version" : "");
420+
for (const Peer& peer : m_peers) {
419421
std::string version{ToString(peer.version) + peer.sub_version};
420422
result += strprintf(
421423
"%3s %5s %5s%6s%7s%5s%5s%5s%5s%7s%*i %*s %-*s%s\n",
@@ -424,16 +426,16 @@ class NetinfoRequestHandler : public BaseRequestHandler
424426
peer.network,
425427
peer.min_ping == -1 ? "" : ToString(round(1000 * peer.min_ping)),
426428
peer.ping == -1 ? "" : ToString(round(1000 * peer.ping)),
427-
peer.last_send == 0 ? "" : ToString(time_now - peer.last_send),
428-
peer.last_recv == 0 ? "" : ToString(time_now - peer.last_recv),
429-
peer.last_trxn == 0 ? "" : ToString((time_now - peer.last_trxn) / 60),
430-
peer.last_blck == 0 ? "" : ToString((time_now - peer.last_blck) / 60),
431-
peer.conn_time == 0 ? "" : ToString((time_now - peer.conn_time) / 60),
432-
is_asmap_on ? 7 : 0, // variable spacing
433-
is_asmap_on && peer.mapped_as != 0 ? ToString(peer.mapped_as) : "",
434-
max_peer_id_length, // variable spacing
429+
peer.last_send == 0 ? "" : ToString(m_time_now - peer.last_send),
430+
peer.last_recv == 0 ? "" : ToString(m_time_now - peer.last_recv),
431+
peer.last_trxn == 0 ? "" : ToString((m_time_now - peer.last_trxn) / 60),
432+
peer.last_blck == 0 ? "" : ToString((m_time_now - peer.last_blck) / 60),
433+
peer.conn_time == 0 ? "" : ToString((m_time_now - peer.conn_time) / 60),
434+
m_is_asmap_on ? 7 : 0, // variable spacing
435+
m_is_asmap_on && peer.mapped_as != 0 ? ToString(peer.mapped_as) : "",
436+
m_max_id_length, // variable spacing
435437
peer.id,
436-
IsAddressSelected() ? max_addr_length : 0, // variable spacing
438+
IsAddressSelected() ? m_max_addr_length : 0, // variable spacing
437439
IsAddressSelected() ? peer.addr : "",
438440
IsVersionSelected() && version != "0" ? version : "");
439441
}

0 commit comments

Comments
 (0)