Skip to content

Commit 4d98b40

Browse files
sipadhruv
authored andcommitted
Change all ping times to std::chrono types
1 parent cabe637 commit 4d98b40

File tree

12 files changed

+56
-43
lines changed

12 files changed

+56
-43
lines changed

src/net.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -603,8 +603,8 @@ void CNode::copyStats(CNodeStats &stats, const std::vector<bool> &m_asmap)
603603
stats.minFeeFilter = 0;
604604
}
605605

606-
stats.m_ping_usec = m_last_ping_time;
607-
stats.m_min_ping_usec = m_min_ping_time;
606+
X(m_last_ping_time);
607+
X(m_min_ping_time);
608608

609609
// Leave string empty if addrLocal invalid (not filled in yet)
610610
CService addrLocalUnlocked = GetAddrLocal();

src/net.h

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -261,8 +261,8 @@ class CNodeStats
261261
uint64_t nRecvBytes;
262262
mapMsgCmdSize mapRecvBytesPerMsgCmd;
263263
NetPermissionFlags m_permissionFlags;
264-
int64_t m_ping_usec;
265-
int64_t m_min_ping_usec;
264+
std::chrono::microseconds m_last_ping_time;
265+
std::chrono::microseconds m_min_ping_time;
266266
CAmount minFeeFilter;
267267
// Our address, as reported by the peer
268268
std::string addrLocal;
@@ -593,11 +593,11 @@ class CNode
593593
std::atomic<int64_t> nLastTXTime{0};
594594

595595
/** Last measured round-trip time. Used only for RPC/GUI stats/debugging.*/
596-
std::atomic<int64_t> m_last_ping_time{0};
596+
std::atomic<std::chrono::microseconds> m_last_ping_time{0us};
597597

598598
/** Lowest measured round-trip time. Used as an inbound peer eviction
599599
* criterium in CConnman::AttemptToEvictConnection. */
600-
std::atomic<int64_t> m_min_ping_time{std::numeric_limits<int64_t>::max()};
600+
std::atomic<std::chrono::microseconds> m_min_ping_time{std::chrono::microseconds::max()};
601601

602602
CNode(NodeId id, ServiceFlags nLocalServicesIn, SOCKET hSocketIn, const CAddress& addrIn, uint64_t nKeyedNetGroupIn, uint64_t nLocalHostNonceIn, const CAddress& addrBindIn, const std::string& addrNameIn, ConnectionType conn_type_in, bool inbound_onion);
603603
~CNode();
@@ -719,8 +719,8 @@ class CNode
719719

720720
/** A ping-pong round trip has completed successfully. Update latest and minimum ping times. */
721721
void PongReceived(std::chrono::microseconds ping_time) {
722-
m_last_ping_time = count_microseconds(ping_time);
723-
m_min_ping_time = std::min(m_min_ping_time.load(), count_microseconds(ping_time));
722+
m_last_ping_time = ping_time;
723+
m_min_ping_time = std::min(m_min_ping_time.load(), ping_time);
724724
}
725725

726726
private:
@@ -1284,7 +1284,7 @@ struct NodeEvictionCandidate
12841284
{
12851285
NodeId id;
12861286
int64_t nTimeConnected;
1287-
int64_t m_min_ping_time;
1287+
std::chrono::microseconds m_min_ping_time;
12881288
int64_t nLastBlockTime;
12891289
int64_t nLastTXTime;
12901290
bool fRelevantServices;

src/net_processing.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1112,7 +1112,7 @@ bool PeerManagerImpl::GetNodeStateStats(NodeId nodeid, CNodeStateStats &stats)
11121112
ping_wait = GetTime<std::chrono::microseconds>() - peer->m_ping_start.load();
11131113
}
11141114

1115-
stats.m_ping_wait_usec = count_microseconds(ping_wait);
1115+
stats.m_ping_wait = ping_wait;
11161116

11171117
return true;
11181118
}

src/net_processing.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ struct CNodeStateStats {
3030
int nSyncHeight = -1;
3131
int nCommonHeight = -1;
3232
int m_starting_height = -1;
33-
int64_t m_ping_wait_usec;
33+
std::chrono::microseconds m_ping_wait;
3434
std::vector<int> vHeightInFlight;
3535
};
3636

src/qt/guiutil.cpp

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,8 @@
5959
#include <QUrlQuery>
6060
#include <QtGlobal>
6161

62+
#include <chrono>
63+
6264
#if defined(Q_OS_MAC)
6365

6466
#include <QProcess>
@@ -706,9 +708,11 @@ QString formatServicesStr(quint64 mask)
706708
return QObject::tr("None");
707709
}
708710

709-
QString formatPingTime(int64_t ping_usec)
711+
QString formatPingTime(std::chrono::microseconds ping_time)
710712
{
711-
return (ping_usec == std::numeric_limits<int64_t>::max() || ping_usec == 0) ? QObject::tr("N/A") : QString(QObject::tr("%1 ms")).arg(QString::number((int)(ping_usec / 1000), 10));
713+
return (ping_time == std::chrono::microseconds::max() || ping_time == 0us) ?
714+
QObject::tr("N/A") :
715+
QString(QObject::tr("%1 ms")).arg(QString::number((int)(count_microseconds(ping_time) / 1000), 10));
712716
}
713717

714718
QString formatTimeOffset(int64_t nTimeOffset)

src/qt/guiutil.h

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@
2020
#include <QString>
2121
#include <QTableView>
2222

23+
#include <chrono>
24+
2325
class QValidatedLineEdit;
2426
class SendCoinsRecipient;
2527

@@ -202,8 +204,8 @@ namespace GUIUtil
202204
/** Format CNodeStats.nServices bitmask into a user-readable string */
203205
QString formatServicesStr(quint64 mask);
204206

205-
/** Format a CNodeStats.m_ping_usec into a user-readable string or display N/A, if 0 */
206-
QString formatPingTime(int64_t ping_usec);
207+
/** Format a CNodeStats.m_last_ping_time into a user-readable string or display N/A, if 0 */
208+
QString formatPingTime(std::chrono::microseconds ping_time);
207209

208210
/** Format a CNodeCombinedStats.nTimeOffset into a user-readable string */
209211
QString formatTimeOffset(int64_t nTimeOffset);

src/qt/peertablemodel.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ bool NodeLessThan::operator()(const CNodeCombinedStats &left, const CNodeCombine
3434
case PeerTableModel::Network:
3535
return pLeft->m_network < pRight->m_network;
3636
case PeerTableModel::Ping:
37-
return pLeft->m_min_ping_usec < pRight->m_min_ping_usec;
37+
return pLeft->m_min_ping_time < pRight->m_min_ping_time;
3838
case PeerTableModel::Sent:
3939
return pLeft->nSendBytes < pRight->nSendBytes;
4040
case PeerTableModel::Received:
@@ -170,7 +170,7 @@ QVariant PeerTableModel::data(const QModelIndex &index, int role) const
170170
case Network:
171171
return GUIUtil::NetworkToQString(rec->nodeStats.m_network);
172172
case Ping:
173-
return GUIUtil::formatPingTime(rec->nodeStats.m_min_ping_usec);
173+
return GUIUtil::formatPingTime(rec->nodeStats.m_min_ping_time);
174174
case Sent:
175175
return GUIUtil::formatBytes(rec->nodeStats.nSendBytes);
176176
case Received:

src/qt/rpcconsole.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1128,8 +1128,8 @@ void RPCConsole::updateDetailWidget()
11281128
ui->peerLastRecv->setText(TimeDurationField(time_now, stats->nodeStats.nLastRecv));
11291129
ui->peerBytesSent->setText(GUIUtil::formatBytes(stats->nodeStats.nSendBytes));
11301130
ui->peerBytesRecv->setText(GUIUtil::formatBytes(stats->nodeStats.nRecvBytes));
1131-
ui->peerPingTime->setText(GUIUtil::formatPingTime(stats->nodeStats.m_ping_usec));
1132-
ui->peerMinPing->setText(GUIUtil::formatPingTime(stats->nodeStats.m_min_ping_usec));
1131+
ui->peerPingTime->setText(GUIUtil::formatPingTime(stats->nodeStats.m_last_ping_time));
1132+
ui->peerMinPing->setText(GUIUtil::formatPingTime(stats->nodeStats.m_min_ping_time));
11331133
ui->timeoffset->setText(GUIUtil::formatTimeOffset(stats->nodeStats.nTimeOffset));
11341134
ui->peerVersion->setText(QString::number(stats->nodeStats.nVersion));
11351135
ui->peerSubversion->setText(QString::fromStdString(stats->nodeStats.cleanSubVer));
@@ -1162,7 +1162,7 @@ void RPCConsole::updateDetailWidget()
11621162
ui->peerCommonHeight->setText(tr("Unknown"));
11631163

11641164
ui->peerHeight->setText(QString::number(stats->nodeStateStats.m_starting_height));
1165-
ui->peerPingWait->setText(GUIUtil::formatPingTime(stats->nodeStateStats.m_ping_wait_usec));
1165+
ui->peerPingWait->setText(GUIUtil::formatPingTime(stats->nodeStateStats.m_ping_wait));
11661166
}
11671167

11681168
ui->peersTabRightPanel->show();

src/rpc/net.cpp

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -202,14 +202,14 @@ static RPCHelpMan getpeerinfo()
202202
obj.pushKV("bytesrecv", stats.nRecvBytes);
203203
obj.pushKV("conntime", stats.nTimeConnected);
204204
obj.pushKV("timeoffset", stats.nTimeOffset);
205-
if (stats.m_ping_usec > 0) {
206-
obj.pushKV("pingtime", ((double)stats.m_ping_usec) / 1e6);
205+
if (stats.m_last_ping_time > 0us) {
206+
obj.pushKV("pingtime", CountSecondsDouble(stats.m_last_ping_time));
207207
}
208-
if (stats.m_min_ping_usec < std::numeric_limits<int64_t>::max()) {
209-
obj.pushKV("minping", ((double)stats.m_min_ping_usec) / 1e6);
208+
if (stats.m_min_ping_time < std::chrono::microseconds::max()) {
209+
obj.pushKV("minping", CountSecondsDouble(stats.m_min_ping_time));
210210
}
211-
if (fStateStats && statestats.m_ping_wait_usec > 0) {
212-
obj.pushKV("pingwait", ((double)statestats.m_ping_wait_usec) / 1e6);
211+
if (fStateStats && statestats.m_ping_wait > 0s) {
212+
obj.pushKV("pingwait", CountSecondsDouble(statestats.m_ping_wait));
213213
}
214214
obj.pushKV("version", stats.nVersion);
215215
// Use the sanitized form of subver here, to avoid tricksy remote peers from

src/test/fuzz/node_eviction.cpp

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -21,17 +21,17 @@ FUZZ_TARGET(node_eviction)
2121
std::vector<NodeEvictionCandidate> eviction_candidates;
2222
while (fuzzed_data_provider.ConsumeBool()) {
2323
eviction_candidates.push_back({
24-
fuzzed_data_provider.ConsumeIntegral<NodeId>(),
25-
fuzzed_data_provider.ConsumeIntegral<int64_t>(),
26-
fuzzed_data_provider.ConsumeIntegral<int64_t>(),
27-
fuzzed_data_provider.ConsumeIntegral<int64_t>(),
28-
fuzzed_data_provider.ConsumeIntegral<int64_t>(),
29-
fuzzed_data_provider.ConsumeBool(),
30-
fuzzed_data_provider.ConsumeBool(),
31-
fuzzed_data_provider.ConsumeBool(),
32-
fuzzed_data_provider.ConsumeIntegral<uint64_t>(),
33-
fuzzed_data_provider.ConsumeBool(),
34-
fuzzed_data_provider.ConsumeBool(),
24+
/* id */ fuzzed_data_provider.ConsumeIntegral<NodeId>(),
25+
/* nTimeConnected */ fuzzed_data_provider.ConsumeIntegral<int64_t>(),
26+
/* m_min_ping_time */ std::chrono::microseconds{fuzzed_data_provider.ConsumeIntegral<int64_t>()},
27+
/* nLastBlockTime */ fuzzed_data_provider.ConsumeIntegral<int64_t>(),
28+
/* nLastTXTime */ fuzzed_data_provider.ConsumeIntegral<int64_t>(),
29+
/* fRelevantServices */ fuzzed_data_provider.ConsumeBool(),
30+
/* fRelayTxes */ fuzzed_data_provider.ConsumeBool(),
31+
/* fBloomFilter */ fuzzed_data_provider.ConsumeBool(),
32+
/* nKeyedNetGroup */ fuzzed_data_provider.ConsumeIntegral<uint64_t>(),
33+
/* prefer_evict */ fuzzed_data_provider.ConsumeBool(),
34+
/* m_is_local */ fuzzed_data_provider.ConsumeBool(),
3535
});
3636
}
3737
// Make a copy since eviction_candidates may be in some valid but otherwise

0 commit comments

Comments
 (0)