linux_networkload.hpp
Go to the documentation of this file.
1/**
2 * @author: Daniel Fuchs
3 * @contact: fuxeysolutions@gmail.com
4 *
5 * distributed under the MIT License (MIT).
6 * Copyright (c) Daniel Fuchs
7 *
8 */
9#pragma once
10
11
12#include <chrono>
13#include <list>
14#include <map>
15#include <memory>
16#include <string>
17#include <unordered_map>
18#include <vector>
19
21{
22
23public:
24 static std::list<std::string>
25 scanNetworkDevices(const std::string& ethernetDataFile = "/proc/net/dev");
26
27 static std::vector<std::shared_ptr<networkLoad>>
28 createLinuxEthernetScanList(const std::string& ethernetDataFileName = "/proc/net/dev")
29 {
30 std::vector<std::shared_ptr<networkLoad>> v;
31 for (const auto& elem : networkLoad::scanNetworkDevices(ethernetDataFileName))
32 {
33 v.push_back(std::make_shared<networkLoad>(ethernetDataFileName, elem));
34 }
35 return v;
36 }
37
38 explicit networkLoad(std::string ethernetDataFileName = "/proc/net/dev",
39 std::string ethName = "eth0");
40 uint64_t getParamPerSecond(std::string designator);
41 uint64_t getParamSinceStartup(std::string designator);
42
43 static std::string getBytesPerSeceondString(uint64_t bytesPerSecond);
44 static std::string getBitsPerSeceondString(uint64_t bytesPerSecond);
45 static std::string getBytesString(uint64_t totalBytes);
46 static std::string getBitsString(uint64_t totalBytes);
47
48 bool isDeviceUp() const;
49 std::string getDeviceName();
50
70
71 static std::string mapEnumToString(networkLoad::networkParam param);
72
73private:
74 std::string ethernetDataFile;
75 std::string ethDev;
76 bool isDeviceAvailable = false;
77
78 class networkParser
79 {
80 private:
81 std::chrono::system_clock::time_point currentTime;
82 std::chrono::system_clock::time_point timeBefore;
83
84 std::map<std::string, std::unordered_map<std::string, uint64_t>> ethObj;
85 std::map<std::string, std::unordered_map<std::string, uint64_t>> ethObjOld;
86
87 public:
88 static std::shared_ptr<networkParser> getNetworkParser();
89 networkParser();
90 void parse(const std::string& netFile = "/proc/net/dev");
91 const std::unordered_map<std::string, uint64_t>&
92 getEthObj(const std::string& ethDevice) const;
93 std::list<std::string> getNetworkDevices(std::string netFile = "/proc/net/dev");
94 const std::chrono::system_clock::time_point getTimeStamp() const;
95 const std::unordered_map<std::string, uint64_t>&
96 getEthObjOld(const std::string& ethDevice) const;
97 const std::chrono::system_clock::time_point getTimeBefore() const;
98
99 static std::shared_ptr<networkParser> inst;
100 };
101};
uint64_t getParamPerSecond(std::string designator)
static std::string getBitsPerSeceondString(uint64_t bytesPerSecond)
static std::vector< std::shared_ptr< networkLoad > > createLinuxEthernetScanList(const std::string &ethernetDataFileName="/proc/net/dev")
static std::string getBitsString(uint64_t totalBytes)
bool isDeviceUp() const
uint64_t getParamSinceStartup(std::string designator)
static std::list< std::string > scanNetworkDevices(const std::string &ethernetDataFile="/proc/net/dev")
std::string getDeviceName()
static std::string getBytesString(uint64_t totalBytes)
static std::string mapEnumToString(networkLoad::networkParam param)
networkLoad(std::string ethernetDataFileName="/proc/net/dev", std::string ethName="eth0")
static std::string getBytesPerSeceondString(uint64_t bytesPerSecond)