summaryrefslogtreecommitdiffstats
path: root/src/datasource/networkspeed.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/datasource/networkspeed.cpp')
-rw-r--r--src/datasource/networkspeed.cpp50
1 files changed, 50 insertions, 0 deletions
diff --git a/src/datasource/networkspeed.cpp b/src/datasource/networkspeed.cpp
new file mode 100644
index 0000000..8888fd4
--- /dev/null
+++ b/src/datasource/networkspeed.cpp
@@ -0,0 +1,50 @@
+#include "networkspeed.h"
+
+NetworkSpeed::NetworkSpeed() :
+ _lastBytes(0),
+ _lastMs(0),
+ _file("/sys/class/net/eth0/statistics/rx_bytes")
+{
+ _timer.start();
+}
+
+NetworkSpeed::~NetworkSpeed()
+{
+ // TODO Auto-generated destructor stub
+}
+
+qint64 NetworkSpeed::read()
+{
+ char buffer[500];
+ qint64 ret, now;
+ if (!_file.open(QIODevice::ReadOnly)) {
+ return -1;
+ }
+ now = _timer.elapsed();
+ _file.readLine(buffer, sizeof(buffer));
+ _file.close();
+ QString line(buffer);
+ const qint64 counter = (qint64)line.toLongLong();
+ if (_lastBytes == 0) {
+ ret = 0;
+ } else {
+ ret = counter - _lastBytes;
+ }
+ if (_lastMs < now) {
+ ret = (ret * 1000) / (now - _lastMs);
+ }
+ _lastMs = now;
+ _lastBytes = counter;
+ return ret;
+}
+
+const QList<qint64>& NetworkSpeed::getBars() const
+{
+ static QList<qint64> list = QList<qint64>() << ((qint64)1024 * 1024 * 10);
+ return list;
+}
+
+qint64 NetworkSpeed::getMaximum()
+{
+ return ((qint64)1024 * 1024 * 100);
+}