mirror of
https://github.com/aristocratos/btop.git
synced 2024-09-28 22:21:35 +02:00
Fixed: Net speed rollover for 32-bit
This commit is contained in:
parent
b6e36a7147
commit
64cdb44343
@ -864,19 +864,21 @@ namespace Net {
|
|||||||
for (const string dir : {"download", "upload"}) {
|
for (const string dir : {"download", "upload"}) {
|
||||||
auto &saved_stat = net.at(iface).stat.at(dir);
|
auto &saved_stat = net.at(iface).stat.at(dir);
|
||||||
auto &bandwidth = net.at(iface).bandwidth.at(dir);
|
auto &bandwidth = net.at(iface).bandwidth.at(dir);
|
||||||
auto dirval = dir == "download" ? std::get<0>(ifstats[iface]) : std::get<1>(ifstats[iface]);
|
uint64_t val = dir == "download" ? std::get<0>(ifstats[iface]) : std::get<1>(ifstats[iface]);
|
||||||
uint64_t val = saved_stat.last;
|
|
||||||
try {
|
|
||||||
val = max(dirval, val);
|
|
||||||
} catch (const std::invalid_argument &) {
|
|
||||||
} catch (const std::out_of_range &) {
|
|
||||||
}
|
|
||||||
|
|
||||||
//? Update speed, total and top values
|
//? Update speed, total and top values
|
||||||
|
if (val < saved_stat.last) {
|
||||||
|
saved_stat.rollover += saved_stat.last;
|
||||||
|
saved_stat.last = 0;
|
||||||
|
}
|
||||||
|
if (cmp_greater((unsigned long long)saved_stat.rollover + (unsigned long long)val, numeric_limits<uint64_t>::max())) {
|
||||||
|
saved_stat.rollover = 0;
|
||||||
|
saved_stat.last = 0;
|
||||||
|
}
|
||||||
saved_stat.speed = round((double)(val - saved_stat.last) / ((double)(new_timestamp - timestamp) / 1000));
|
saved_stat.speed = round((double)(val - saved_stat.last) / ((double)(new_timestamp - timestamp) / 1000));
|
||||||
if (saved_stat.speed > saved_stat.top) saved_stat.top = saved_stat.speed;
|
if (saved_stat.speed > saved_stat.top) saved_stat.top = saved_stat.speed;
|
||||||
if (saved_stat.offset > val) saved_stat.offset = 0;
|
if (saved_stat.offset > val + saved_stat.rollover) saved_stat.offset = 0;
|
||||||
saved_stat.total = val - saved_stat.offset;
|
saved_stat.total = (val + saved_stat.rollover) - saved_stat.offset;
|
||||||
saved_stat.last = val;
|
saved_stat.last = val;
|
||||||
|
|
||||||
//? Add values to graph
|
//? Add values to graph
|
||||||
|
@ -1097,8 +1097,8 @@ namespace Net {
|
|||||||
auto& saved_stat = net.at(iface).stat.at(dir);
|
auto& saved_stat = net.at(iface).stat.at(dir);
|
||||||
auto& bandwidth = net.at(iface).bandwidth.at(dir);
|
auto& bandwidth = net.at(iface).bandwidth.at(dir);
|
||||||
|
|
||||||
uint64_t val = saved_stat.last;
|
uint64_t val = 0;
|
||||||
try { val = max((uint64_t)stoull(readfile(sys_file, "0")), val); }
|
try { val = (uint64_t)stoull(readfile(sys_file, "0")); }
|
||||||
catch (const std::invalid_argument&) {}
|
catch (const std::invalid_argument&) {}
|
||||||
catch (const std::out_of_range&) {}
|
catch (const std::out_of_range&) {}
|
||||||
|
|
||||||
|
@ -918,13 +918,7 @@ namespace Net {
|
|||||||
for (const string dir : {"download", "upload"}) {
|
for (const string dir : {"download", "upload"}) {
|
||||||
auto &saved_stat = net.at(iface).stat.at(dir);
|
auto &saved_stat = net.at(iface).stat.at(dir);
|
||||||
auto &bandwidth = net.at(iface).bandwidth.at(dir);
|
auto &bandwidth = net.at(iface).bandwidth.at(dir);
|
||||||
auto dirval = dir == "download" ? std::get<0>(ifstats[iface]) : std::get<1>(ifstats[iface]);
|
uint64_t val = dir == "download" ? std::get<0>(ifstats[iface]) : std::get<1>(ifstats[iface]);
|
||||||
uint64_t val = saved_stat.last;
|
|
||||||
try {
|
|
||||||
val = max(dirval, val);
|
|
||||||
} catch (const std::invalid_argument &) {
|
|
||||||
} catch (const std::out_of_range &) {
|
|
||||||
}
|
|
||||||
|
|
||||||
//? Update speed, total and top values
|
//? Update speed, total and top values
|
||||||
if (val < saved_stat.last) {
|
if (val < saved_stat.last) {
|
||||||
|
Loading…
Reference in New Issue
Block a user