Distinguish unknown traffic from zero traffic
This commit is contained in:
parent
d923d8efff
commit
2a5137184a
|
@ -55,10 +55,10 @@ SyncthingConnection::SyncthingConnection(const QString &syncthingUrl, const QByt
|
|||
m_reconnecting(false),
|
||||
m_lastEventId(0),
|
||||
m_autoReconnectTries(0),
|
||||
m_totalIncomingTraffic(0),
|
||||
m_totalOutgoingTraffic(0),
|
||||
m_totalIncomingRate(0),
|
||||
m_totalOutgoingRate(0),
|
||||
m_totalIncomingTraffic(unknownTraffic),
|
||||
m_totalOutgoingTraffic(unknownTraffic),
|
||||
m_totalIncomingRate(0.0),
|
||||
m_totalOutgoingRate(0.0),
|
||||
m_configReply(nullptr),
|
||||
m_statusReply(nullptr),
|
||||
m_connectionsReply(nullptr),
|
||||
|
@ -210,8 +210,8 @@ void SyncthingConnection::continueReconnecting()
|
|||
m_lastEventId = 0;
|
||||
m_configDir.clear();
|
||||
m_myId.clear();
|
||||
m_totalIncomingTraffic = 0;
|
||||
m_totalOutgoingTraffic = 0;
|
||||
m_totalIncomingTraffic = unknownTraffic;
|
||||
m_totalOutgoingTraffic = unknownTraffic;
|
||||
m_totalIncomingRate = 0.0;
|
||||
m_totalOutgoingRate = 0.0;
|
||||
m_unreadNotifications = false;
|
||||
|
@ -897,15 +897,19 @@ void SyncthingConnection::readConnections()
|
|||
const QJsonObject totalObj(replyObj.value(QStringLiteral("total")).toObject());
|
||||
|
||||
// read traffic, the conversion to double is neccassary because toInt() doesn't work for high values
|
||||
const uint64 totalIncomingTraffic = static_cast<uint64>(totalObj.value(QStringLiteral("inBytesTotal")).toDouble(0.0));
|
||||
const uint64 totalOutgoingTraffic = static_cast<uint64>(totalObj.value(QStringLiteral("outBytesTotal")).toDouble(0.0));
|
||||
const QJsonValue totalIncomingTrafficValue(totalObj.value(QStringLiteral("inBytesTotal")));
|
||||
const QJsonValue totalOutgoingTrafficValue(totalObj.value(QStringLiteral("outBytesTotal")));
|
||||
const uint64 totalIncomingTraffic = totalIncomingTrafficValue.isDouble()
|
||||
? static_cast<uint64>(totalIncomingTrafficValue.toDouble(0.0)) : unknownTraffic;
|
||||
const uint64 totalOutgoingTraffic = totalOutgoingTrafficValue.isDouble()
|
||||
? static_cast<uint64>(totalOutgoingTrafficValue.toDouble(0.0)) : unknownTraffic;
|
||||
double transferTime;
|
||||
if(!m_lastConnectionsUpdate.isNull() && ((transferTime = (DateTime::gmtNow() - m_lastConnectionsUpdate).totalSeconds()) != 0.0)) {
|
||||
m_totalIncomingRate = (totalIncomingTraffic - m_totalIncomingTraffic) * 0.008 / transferTime,
|
||||
m_totalOutgoingRate = (totalOutgoingTraffic - m_totalOutgoingTraffic) * 0.008 / transferTime;
|
||||
} else {
|
||||
m_totalIncomingRate = m_totalOutgoingRate = 0.0;
|
||||
}
|
||||
const bool hasDelta = !m_lastConnectionsUpdate.isNull()
|
||||
&& ((transferTime = (DateTime::gmtNow() - m_lastConnectionsUpdate).totalSeconds()) != 0.0);
|
||||
m_totalIncomingRate = (hasDelta && totalIncomingTraffic != unknownTraffic && m_totalIncomingTraffic != unknownTraffic)
|
||||
? (totalIncomingTraffic - m_totalIncomingTraffic) * 0.008 / transferTime : 0.0;
|
||||
m_totalOutgoingRate = (hasDelta && totalOutgoingTraffic != unknownTraffic && m_totalOutgoingRate != unknownTraffic)
|
||||
? (totalOutgoingTraffic - m_totalOutgoingTraffic) * 0.008 / transferTime : 0.0;
|
||||
emit trafficChanged(m_totalIncomingTraffic = totalIncomingTraffic, m_totalOutgoingTraffic = totalOutgoingTraffic);
|
||||
|
||||
// read connection status
|
||||
|
|
|
@ -11,6 +11,7 @@
|
|||
|
||||
#include <functional>
|
||||
#include <vector>
|
||||
#include <limits>
|
||||
|
||||
QT_FORWARD_DECLARE_CLASS(QNetworkAccessManager)
|
||||
QT_FORWARD_DECLARE_CLASS(QNetworkReply)
|
||||
|
@ -102,6 +103,7 @@ public:
|
|||
uint64 totalOutgoingTraffic() const;
|
||||
double totalIncomingRate() const;
|
||||
double totalOutgoingRate() const;
|
||||
static constexpr uint64 unknownTraffic = std::numeric_limits<uint64>::max();
|
||||
const std::vector<SyncthingDir> &dirInfo() const;
|
||||
const std::vector<SyncthingDev> &devInfo() const;
|
||||
QMetaObject::Connection requestQrCode(const QString &text, std::function<void (const QByteArray &)> callback);
|
||||
|
|
|
@ -481,18 +481,20 @@ void TrayWidget::updateTraffic()
|
|||
static const QString unknownStr(tr("unknown"));
|
||||
if(m_connection.isConnected()) {
|
||||
if(m_connection.totalIncomingRate() != 0.0) {
|
||||
m_ui->inTrafficLabel->setText(m_connection.totalIncomingTraffic() != 0
|
||||
m_ui->inTrafficLabel->setText(m_connection.totalIncomingTraffic() != SyncthingConnection::unknownTraffic
|
||||
? QStringLiteral("%1 (%2)").arg(QString::fromUtf8(bitrateToString(m_connection.totalIncomingRate(), true).data()), QString::fromUtf8(dataSizeToString(m_connection.totalIncomingTraffic()).data()))
|
||||
: QString::fromUtf8(bitrateToString(m_connection.totalIncomingRate(), true).data()));
|
||||
} else {
|
||||
m_ui->inTrafficLabel->setText(m_connection.totalIncomingTraffic() != 0 ? QString::fromUtf8(dataSizeToString(m_connection.totalIncomingTraffic()).data()) : unknownStr);
|
||||
m_ui->inTrafficLabel->setText(m_connection.totalIncomingTraffic() != SyncthingConnection::unknownTraffic
|
||||
? QString::fromUtf8(dataSizeToString(m_connection.totalIncomingTraffic()).data()) : unknownStr);
|
||||
}
|
||||
if(m_connection.totalOutgoingRate() != 0.0) {
|
||||
m_ui->outTrafficLabel->setText(m_connection.totalIncomingTraffic() != 0
|
||||
m_ui->outTrafficLabel->setText(m_connection.totalIncomingTraffic() != SyncthingConnection::unknownTraffic
|
||||
? QStringLiteral("%1 (%2)").arg(QString::fromUtf8(bitrateToString(m_connection.totalOutgoingRate(), true).data()), QString::fromUtf8(dataSizeToString(m_connection.totalOutgoingTraffic()).data()))
|
||||
: QString::fromUtf8(bitrateToString(m_connection.totalOutgoingRate(), true).data()));
|
||||
} else {
|
||||
m_ui->outTrafficLabel->setText(m_connection.totalOutgoingTraffic() != 0 ? QString::fromUtf8(dataSizeToString(m_connection.totalOutgoingTraffic()).data()) : unknownStr);
|
||||
m_ui->outTrafficLabel->setText(m_connection.totalOutgoingTraffic() != SyncthingConnection::unknownTraffic
|
||||
? QString::fromUtf8(dataSizeToString(m_connection.totalOutgoingTraffic()).data()) : unknownStr);
|
||||
}
|
||||
} else {
|
||||
m_ui->inTrafficLabel->setText(unknownStr);
|
||||
|
|
Loading…
Reference in New Issue