diff --git a/src/net.h b/src/net.h --- a/src/net.h +++ b/src/net.h @@ -579,9 +579,9 @@ mapMsgCmdSize mapRecvBytesPerMsgCmd; NetPermissionFlags m_permissionFlags; bool m_legacyWhitelisted; - double dPingTime; - double dPingWait; - double dMinPing; + int64_t m_ping_usec; + int64_t m_ping_wait_usec; + int64_t m_min_ping_usec; Amount minFeeFilter; // Our address, as reported by the peer std::string addrLocal; diff --git a/src/net.cpp b/src/net.cpp --- a/src/net.cpp +++ b/src/net.cpp @@ -556,9 +556,9 @@ // Raw ping time is in microseconds, but show it to user as whole seconds // (Bitcoin users should be well used to small numbers with many decimal // places by now :) - stats.dPingTime = ((double(nPingUsecTime)) / 1e6); - stats.dMinPing = ((double(nMinPingUsecTime)) / 1e6); - stats.dPingWait = ((double(nPingUsecWait)) / 1e6); + stats.m_ping_usec = nPingUsecTime; + stats.m_min_ping_usec = nMinPingUsecTime; + stats.m_ping_wait_usec = nPingUsecWait; // Leave string empty if addrLocal invalid (not filled in yet) CService addrLocalUnlocked = GetAddrLocal(); diff --git a/src/qt/guiutil.h b/src/qt/guiutil.h --- a/src/qt/guiutil.h +++ b/src/qt/guiutil.h @@ -227,9 +227,11 @@ /* Format CNodeStats.nServices bitmask into a user-readable string */ QString formatServicesStr(quint64 mask); -/* Format a CNodeCombinedStats.dPingTime into a user-readable string or display - * N/A, if 0*/ -QString formatPingTime(double dPingTime); +/* + * Format a CNodeStats.m_ping_usec into a user-readable string or display N/A, + * if 0. + */ +QString formatPingTime(int64_t ping_usec); /* Format a CNodeCombinedStats.nTimeOffset into a user-readable string. */ QString formatTimeOffset(int64_t nTimeOffset); diff --git a/src/qt/guiutil.cpp b/src/qt/guiutil.cpp --- a/src/qt/guiutil.cpp +++ b/src/qt/guiutil.cpp @@ -884,12 +884,11 @@ } } -QString formatPingTime(double dPingTime) { - return (dPingTime == std::numeric_limits::max() / 1e6 || - dPingTime == 0) +QString formatPingTime(int64_t ping_usec) { + return (ping_usec == std::numeric_limits::max() || ping_usec == 0) ? QObject::tr("N/A") : QString(QObject::tr("%1 ms")) - .arg(QString::number((int)(dPingTime * 1000), 10)); + .arg(QString::number(int(ping_usec / 1000), 10)); } QString formatTimeOffset(int64_t nTimeOffset) { diff --git a/src/qt/peertablemodel.cpp b/src/qt/peertablemodel.cpp --- a/src/qt/peertablemodel.cpp +++ b/src/qt/peertablemodel.cpp @@ -35,7 +35,7 @@ case PeerTableModel::Subversion: return pLeft->cleanSubVer.compare(pRight->cleanSubVer) < 0; case PeerTableModel::Ping: - return pLeft->dMinPing < pRight->dMinPing; + return pLeft->m_min_ping_usec < pRight->m_min_ping_usec; case PeerTableModel::Sent: return pLeft->nSendBytes < pRight->nSendBytes; case PeerTableModel::Received: @@ -156,7 +156,7 @@ case Subversion: return QString::fromStdString(rec->nodeStats.cleanSubVer); case Ping: - return GUIUtil::formatPingTime(rec->nodeStats.dMinPing); + return GUIUtil::formatPingTime(rec->nodeStats.m_min_ping_usec); case Sent: return GUIUtil::formatBytes(rec->nodeStats.nSendBytes); case Received: diff --git a/src/qt/rpcconsole.cpp b/src/qt/rpcconsole.cpp --- a/src/qt/rpcconsole.cpp +++ b/src/qt/rpcconsole.cpp @@ -1295,11 +1295,11 @@ ui->peerConnTime->setText(GUIUtil::formatDurationStr( GetSystemTimeInSeconds() - stats->nodeStats.nTimeConnected)); ui->peerPingTime->setText( - GUIUtil::formatPingTime(stats->nodeStats.dPingTime)); + GUIUtil::formatPingTime(stats->nodeStats.m_ping_usec)); ui->peerPingWait->setText( - GUIUtil::formatPingTime(stats->nodeStats.dPingWait)); + GUIUtil::formatPingTime(stats->nodeStats.m_ping_wait_usec)); ui->peerMinPing->setText( - GUIUtil::formatPingTime(stats->nodeStats.dMinPing)); + GUIUtil::formatPingTime(stats->nodeStats.m_min_ping_usec)); ui->timeoffset->setText( GUIUtil::formatTimeOffset(stats->nodeStats.nTimeOffset)); ui->peerVersion->setText( diff --git a/src/rpc/net.cpp b/src/rpc/net.cpp --- a/src/rpc/net.cpp +++ b/src/rpc/net.cpp @@ -195,15 +195,14 @@ obj.pushKV("bytesrecv", stats.nRecvBytes); obj.pushKV("conntime", stats.nTimeConnected); obj.pushKV("timeoffset", stats.nTimeOffset); - if (stats.dPingTime > 0.0) { - obj.pushKV("pingtime", stats.dPingTime); + if (stats.m_ping_usec > 0) { + obj.pushKV("pingtime", double(stats.m_ping_usec) / 1e6); } - if (stats.dMinPing < - static_cast(std::numeric_limits::max()) / 1e6) { - obj.pushKV("minping", stats.dMinPing); + if (stats.m_min_ping_usec < std::numeric_limits::max()) { + obj.pushKV("minping", double(stats.m_min_ping_usec) / 1e6); } - if (stats.dPingWait > 0.0) { - obj.pushKV("pingwait", stats.dPingWait); + if (stats.m_ping_wait_usec > 0) { + obj.pushKV("pingwait", double(stats.m_ping_wait_usec) / 1e6); } obj.pushKV("version", stats.nVersion); // Use the sanitized form of subver here, to avoid tricksy remote peers