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) || defined(PCAPPP_MINGW_ENV)
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 
253  int clockGetTime(long& sec, long& nsec);
254 
260  class AppName
261  {
262  private:
263  static std::string m_AppName;
264 
265  public:
271  static void init(int argc, char* argv[])
272  {
273  if (argc == 0)
274  {
275  m_AppName = "";
276  return;
277  }
278 
279  m_AppName = argv[0];
280 
281  // remove Linux/Unix path
282  while (m_AppName.find("/") != std::string::npos)
283  {
284  m_AppName = m_AppName.substr(m_AppName.find("/")+1);
285  }
286 
287  // remove Windows path
288  while (m_AppName.find("\\") != std::string::npos)
289  {
290  m_AppName = m_AppName.substr(m_AppName.find("\\")+1);
291  }
292 
293  // remove file extension
294  m_AppName = m_AppName.substr(0, m_AppName.find("."));
295  }
296 
300  static std::string get() { return m_AppName; }
301  };
302 
309  {
310  public:
316  typedef void (*EventHandlerCallback)(void* cookie);
317 
323  {
324  static ApplicationEventHandler instance;
325  return instance;
326  }
327 
334  void onApplicationInterrupted(EventHandlerCallback handler, void* cookie);
335 
336  private:
337  EventHandlerCallback m_ApplicationInterruptedHandler;
338  void* m_ApplicationInterruptedCookie;
339 
340  // private c'tor
342 
343 #ifdef WIN32
344  static BOOL WINAPI handlerRoutine(DWORD fdwCtrlType);
345 #else
346  pthread_mutex_t m_HandlerRoutineMutex;
347  static void handlerRoutine(int signum);
348 #endif
349  };
350 
351 } // namespace pcpp
352 
353 #endif /* PCAPPP_SYSTEM_UTILS */
static const SystemCore Core5
Definition: SystemUtils.h:82
bool directoryExists(std::string dirPath)
static const SystemCore Core14
Definition: SystemUtils.h:118
void onApplicationInterrupted(EventHandlerCallback handler, void *cookie)
static const SystemCore Core10
Definition: SystemUtils.h:102
static const SystemCore Core16
Definition: SystemUtils.h:126
static const SystemCore Core12
Definition: SystemUtils.h:110
static const SystemCore Core13
Definition: SystemUtils.h:114
Definition: SystemUtils.h:32
static const SystemCore Core2
Definition: SystemUtils.h:70
static const SystemCore Core17
Definition: SystemUtils.h:130
static const SystemCore Core9
Definition: SystemUtils.h:98
static void init(int argc, char *argv[])
Definition: SystemUtils.h:271
static const SystemCore IdToSystemCore[32]
Definition: SystemUtils.h:191
static const SystemCore Core18
Definition: SystemUtils.h:134
Definition: SystemUtils.h:260
static const SystemCore Core30
Definition: SystemUtils.h:182
static const SystemCore Core1
Definition: SystemUtils.h:66
CoreMask createCoreMaskFromCoreIds(std::vector< int > coreIds)
static const SystemCore Core15
Definition: SystemUtils.h:122
CoreMask createCoreMaskFromCoreVector(std::vector< SystemCore > cores)
static const SystemCore Core28
Definition: SystemUtils.h:174
static const SystemCore Core29
Definition: SystemUtils.h:178
static const SystemCore Core4
Definition: SystemUtils.h:78
uint8_t Id
Definition: SystemUtils.h:44
static const SystemCore Core7
Definition: SystemUtils.h:90
void createCoreVectorFromCoreMask(CoreMask coreMask, std::vector< SystemCore > &resultVec)
static const SystemCore Core19
Definition: SystemUtils.h:138
static const SystemCore Core3
Definition: SystemUtils.h:74
static const SystemCore Core26
Definition: SystemUtils.h:166
static const SystemCore Core11
Definition: SystemUtils.h:106
static ApplicationEventHandler & getInstance()
Definition: SystemUtils.h:322
static const SystemCore Core31
Definition: SystemUtils.h:186
static const SystemCore Core23
Definition: SystemUtils.h:154
static const SystemCore Core20
Definition: SystemUtils.h:142
std::string executeShellCommand(const std::string command)
static const SystemCore Core6
Definition: SystemUtils.h:86
static const SystemCore Core22
Definition: SystemUtils.h:150
Definition: SystemUtils.h:57
int clockGetTime(long &sec, long &nsec)
uint32_t Mask
Definition: SystemUtils.h:39
static const SystemCore Core27
Definition: SystemUtils.h:170
static const SystemCore Core0
Definition: SystemUtils.h:62
bool operator==(const SystemCore &other) const
Definition: SystemUtils.h:50
Definition: SystemUtils.h:308
static const SystemCore Core24
Definition: SystemUtils.h:158
static const SystemCore Core21
Definition: SystemUtils.h:146
static const SystemCore Core25
Definition: SystemUtils.h:162
void(* EventHandlerCallback)(void *cookie)
Definition: SystemUtils.h:316
The main namespace for the PcapPlusPlus lib.
int getNumOfCores()
static const SystemCore Core8
Definition: SystemUtils.h:94
CoreMask getCoreMaskForAllMachineCores()