PcapPlusPlus
SystemUtils.h
Go to the documentation of this file.
1 #ifndef PCAPPP_SYSTEM_UTILS
2 #define PCAPPP_SYSTEM_UTILS
3 
4 #include <stdint.h>
5 #include <string>
6 #include <vector>
7 #if defined(WIN32) || defined(WINx64)
8 #include <windows.h>
9 #else
10 #include <pthread.h>
11 #endif
12 
14 
15 #define MAX_NUM_OF_CORES 32
16 
17 #ifdef _MSC_VER
18 int gettimeofday(struct timeval * tp, struct timezone * tzp);
19 #endif
20 
25 namespace pcpp
26 {
27 
32  struct SystemCore
33  {
39  uint32_t Mask;
40 
44  uint8_t Id;
45 
50  bool operator==(const SystemCore& other) const { return Id == other.Id; }
51  };
52 
57  struct SystemCores
58  {
62  static const SystemCore Core0;
66  static const SystemCore Core1;
70  static const SystemCore Core2;
74  static const SystemCore Core3;
78  static const SystemCore Core4;
82  static const SystemCore Core5;
86  static const SystemCore Core6;
90  static const SystemCore Core7;
94  static const SystemCore Core8;
98  static const SystemCore Core9;
102  static const SystemCore Core10;
106  static const SystemCore Core11;
110  static const SystemCore Core12;
114  static const SystemCore Core13;
118  static const SystemCore Core14;
122  static const SystemCore Core15;
126  static const SystemCore Core16;
130  static const SystemCore Core17;
134  static const SystemCore Core18;
138  static const SystemCore Core19;
142  static const SystemCore Core20;
146  static const SystemCore Core21;
150  static const SystemCore Core22;
154  static const SystemCore Core23;
158  static const SystemCore Core24;
162  static const SystemCore Core25;
166  static const SystemCore Core26;
170  static const SystemCore Core27;
174  static const SystemCore Core28;
178  static const SystemCore Core29;
182  static const SystemCore Core30;
186  static const SystemCore Core31;
187 
191  static const SystemCore IdToSystemCore[MAX_NUM_OF_CORES];
192  };
193 
194  typedef uint32_t CoreMask;
195 
200  int getNumOfCores();
201 
207 
208 
214  CoreMask createCoreMaskFromCoreVector(std::vector<SystemCore> cores);
215 
216 
222  CoreMask createCoreMaskFromCoreIds(std::vector<int> coreIds);
223 
224 
230  void createCoreVectorFromCoreMask(CoreMask coreMask, std::vector<SystemCore>& resultVec);
231 
237  std::string executeShellCommand(const std::string command);
238 
244  bool directoryExists(std::string dirPath);
245 
251  class AppName
252  {
253  private:
254  static std::string m_AppName;
255 
256  public:
262  static void init(int argc, char* argv[])
263  {
264  if (argc == 0)
265  {
266  m_AppName = "";
267  return;
268  }
269 
270  m_AppName = argv[0];
271 
272  // remove Linux/Unix path
273  while (m_AppName.find("/") != std::string::npos)
274  {
275  m_AppName = m_AppName.substr(m_AppName.find("/")+1);
276  }
277 
278  // remove Windows path
279  while (m_AppName.find("\\") != std::string::npos)
280  {
281  m_AppName = m_AppName.substr(m_AppName.find("\\")+1);
282  }
283 
284  // remove file extension
285  m_AppName = m_AppName.substr(0, m_AppName.find("."));
286  }
287 
291  static std::string get() { return m_AppName; }
292  };
293 
300  {
301  public:
307  typedef void (*EventHandlerCallback)(void* cookie);
308 
314  {
315  static ApplicationEventHandler instance;
316  return instance;
317  }
318 
325  void onApplicationInterrupted(EventHandlerCallback handler, void* cookie);
326 
327  private:
328  EventHandlerCallback m_ApplicationInterruptedHandler;
329  void* m_ApplicationInterruptedCookie;
330 
331  // private c'tor
333 
334 #ifdef WIN32
335  static BOOL WINAPI handlerRoutine(DWORD fdwCtrlType);
336 #else
337  pthread_mutex_t m_HandlerRoutineMutex;
338  static void handlerRoutine(int signum);
339 #endif
340  };
341 
342 } // namespace pcpp
343 
344 #endif /* PCAPPP_SYSTEM_UTILS */
static const SystemCore Core25
Definition: SystemUtils.h:162
static const SystemCore Core14
Definition: SystemUtils.h:118
static const SystemCore Core11
Definition: SystemUtils.h:106
static const SystemCore Core15
Definition: SystemUtils.h:122
Definition: SystemUtils.h:57
CoreMask createCoreMaskFromCoreVector(std::vector< SystemCore > cores)
static const SystemCore Core12
Definition: SystemUtils.h:110
bool operator==(const SystemCore &other) const
Definition: SystemUtils.h:50
static const SystemCore Core26
Definition: SystemUtils.h:166
Definition: SystemUtils.h:251
static const SystemCore Core6
Definition: SystemUtils.h:86
static const SystemCore Core24
Definition: SystemUtils.h:158
static const SystemCore Core23
Definition: SystemUtils.h:154
CoreMask getCoreMaskForAllMachineCores()
Definition: SystemUtils.h:32
static const SystemCore Core0
Definition: SystemUtils.h:62
uint32_t Mask
Definition: SystemUtils.h:39
CoreMask createCoreMaskFromCoreIds(std::vector< int > coreIds)
uint8_t Id
Definition: SystemUtils.h:44
static const SystemCore Core7
Definition: SystemUtils.h:90
static const SystemCore Core13
Definition: SystemUtils.h:114
static ApplicationEventHandler & getInstance()
Definition: SystemUtils.h:313
std::string executeShellCommand(const std::string command)
int getNumOfCores()
void onApplicationInterrupted(EventHandlerCallback handler, void *cookie)
static const SystemCore Core29
Definition: SystemUtils.h:178
static const SystemCore Core5
Definition: SystemUtils.h:82
static const SystemCore Core31
Definition: SystemUtils.h:186
static const SystemCore Core22
Definition: SystemUtils.h:150
static const SystemCore Core30
Definition: SystemUtils.h:182
static const SystemCore Core21
Definition: SystemUtils.h:146
static const SystemCore Core16
Definition: SystemUtils.h:126
static const SystemCore Core1
Definition: SystemUtils.h:66
static const SystemCore Core19
Definition: SystemUtils.h:138
static void init(int argc, char *argv[])
Definition: SystemUtils.h:262
bool directoryExists(std::string dirPath)
static const SystemCore Core27
Definition: SystemUtils.h:170
static const SystemCore Core3
Definition: SystemUtils.h:74
static const SystemCore Core4
Definition: SystemUtils.h:78
static const SystemCore Core17
Definition: SystemUtils.h:130
static const SystemCore Core10
Definition: SystemUtils.h:102
static const SystemCore IdToSystemCore[32]
Definition: SystemUtils.h:191
void(* EventHandlerCallback)(void *cookie)
Definition: SystemUtils.h:307
static const SystemCore Core28
Definition: SystemUtils.h:174
static const SystemCore Core8
Definition: SystemUtils.h:94
The main namespace for the PcapPlusPlus lib.
void createCoreVectorFromCoreMask(CoreMask coreMask, std::vector< SystemCore > &resultVec)
static const SystemCore Core2
Definition: SystemUtils.h:70
static const SystemCore Core20
Definition: SystemUtils.h:142
static const SystemCore Core18
Definition: SystemUtils.h:134
static const SystemCore Core9
Definition: SystemUtils.h:98
Definition: SystemUtils.h:299