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 
23 public:
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 
52  {
53  RXbytes = 0,
69  };
70 
71  static std::string mapEnumToString(networkLoad::networkParam param);
72 
73 private:
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 };
networkLoad::TXdrop
@ TXdrop
Definition: linux_networkload.hpp:64
networkLoad::TXbytes
@ TXbytes
Definition: linux_networkload.hpp:61
networkLoad::networkLoad
networkLoad(std::string ethernetDataFileName="/proc/net/dev", std::string ethName="eth0")
Definition: linux_networkload.cpp:49
networkLoad::getParamSinceStartup
uint64_t getParamSinceStartup(std::string designator)
Definition: linux_networkload.cpp:356
networkLoad::TXerrs
@ TXerrs
Definition: linux_networkload.hpp:63
networkLoad::createLinuxEthernetScanList
static std::vector< std::shared_ptr< networkLoad > > createLinuxEthernetScanList(const std::string &ethernetDataFileName="/proc/net/dev")
Definition: linux_networkload.hpp:28
networkLoad::TXcolls
@ TXcolls
Definition: linux_networkload.hpp:66
networkLoad::RXframe
@ RXframe
Definition: linux_networkload.hpp:58
networkLoad::RXdrop
@ RXdrop
Definition: linux_networkload.hpp:56
networkLoad::TXcompressed
@ TXcompressed
Definition: linux_networkload.hpp:68
networkLoad::mapEnumToString
static std::string mapEnumToString(networkLoad::networkParam param)
Definition: linux_networkload.cpp:40
networkLoad::RXmulticast
@ RXmulticast
Definition: linux_networkload.hpp:60
networkLoad::RXfifo
@ RXfifo
Definition: linux_networkload.hpp:57
networkLoad::getBitsString
static std::string getBitsString(uint64_t totalBytes)
Definition: linux_networkload.cpp:267
networkLoad::getBytesPerSeceondString
static std::string getBytesPerSeceondString(uint64_t bytesPerSecond)
Definition: linux_networkload.cpp:195
networkLoad::TXcarrier
@ TXcarrier
Definition: linux_networkload.hpp:67
networkLoad::scanNetworkDevices
static std::list< std::string > scanNetworkDevices(const std::string &ethernetDataFile="/proc/net/dev")
Definition: linux_networkload.cpp:187
networkLoad::networkParam
networkParam
Definition: linux_networkload.hpp:51
networkLoad::RXcompressed
@ RXcompressed
Definition: linux_networkload.hpp:59
networkLoad::getBytesString
static std::string getBytesString(uint64_t totalBytes)
Definition: linux_networkload.cpp:207
armarx::ctrlutil::v
double v(double t, double v0, double a0, double j)
Definition: CtrlUtil.h:39
networkLoad::getDeviceName
std::string getDeviceName()
Definition: linux_networkload.cpp:181
networkLoad::getParamPerSecond
uint64_t getParamPerSecond(std::string designator)
Definition: linux_networkload.cpp:328
networkLoad::getBitsPerSeceondString
static std::string getBitsPerSeceondString(uint64_t bytesPerSecond)
Definition: linux_networkload.cpp:201
networkLoad::RXpackets
@ RXpackets
Definition: linux_networkload.hpp:54
networkLoad::TXpackets
@ TXpackets
Definition: linux_networkload.hpp:62
networkLoad::isDeviceUp
bool isDeviceUp() const
Definition: linux_networkload.cpp:175
networkLoad
Definition: linux_networkload.hpp:20
networkLoad::RXbytes
@ RXbytes
Definition: linux_networkload.hpp:53
networkLoad::RXerrs
@ RXerrs
Definition: linux_networkload.hpp:55
networkLoad::TXfifo
@ TXfifo
Definition: linux_networkload.hpp:65