aboutsummaryrefslogtreecommitdiff
path: root/statistics.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'statistics.hpp')
-rw-r--r--statistics.hpp52
1 files changed, 52 insertions, 0 deletions
diff --git a/statistics.hpp b/statistics.hpp
new file mode 100644
index 0000000..c916ecb
--- /dev/null
+++ b/statistics.hpp
@@ -0,0 +1,52 @@
+#ifndef CBM_STATISTICS_H
+#define CBM_STATISTICS_H
+
+#include <list>
+#include <string>
+#include <sys/time.h>
+
+namespace statistics {
+
+struct Statistics {
+ struct timeval timestamp;
+ unsigned long long rx_bytes, rx_packets, rx_errs, rx_drop, rx_fifo,
+ rx_frame, rx_compressed, rx_multicast,
+ tx_bytes, tx_packets, tx_errs, tx_drop, tx_fifo,
+ tx_frame, tx_compressed, tx_multicast;
+};
+
+class Interface {
+ public:
+ Interface(const std::string& name);
+
+ const std::string& getName() const;
+
+ void setUpdated(bool updated);
+ bool getUpdated() const;
+
+ void update(const Statistics& statistics);
+
+ double getReceiveSpeed() const;
+ double getTransmitSpeed() const;
+
+ private:
+ std::string name_;
+ bool updated_;
+ Statistics statistics_[2];
+ double receiveSpeed_, transmitSpeed_;
+};
+
+class Reader {
+ public:
+ void update();
+
+ typedef std::list<Interface> Interfaces;
+ const Interfaces& getInterfaces() const;
+
+ private:
+ Interfaces interfaces_;
+};
+
+} // namespace statistics
+
+#endif