statistics_db.h 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. /**
  2. * Class writing the statistics to the database.
  3. */
  4. #ifndef CPP_PCAPREADER_STATISTICSDB_H
  5. #define CPP_PCAPREADER_STATISTICSDB_H
  6. #include <iostream>
  7. #include <memory>
  8. #include <string>
  9. #include "statistics.h"
  10. #include <SQLiteCpp/SQLiteCpp.h>
  11. class statistics_db {
  12. public:
  13. /*
  14. * Constructor: Creates new database / Opens existing database
  15. */
  16. statistics_db(std::string database_path);
  17. /*
  18. * Database version: Increment number on every change in the C++ code!
  19. */
  20. static const int DB_VERSION = 2;
  21. /*
  22. * Methods for writing values into database
  23. */
  24. void writeStatisticsIP(std::unordered_map<std::string, entry_ipStat> ipStatistics);
  25. void writeStatisticsTTL(std::unordered_map<ipAddress_ttl, int> ttlDistribution);
  26. void writeStatisticsMSS(std::unordered_map<ipAddress_mss, int> mssDistribution);
  27. void writeStatisticsToS(std::unordered_map<ipAddress_tos, int> tosDistribution);
  28. void writeStatisticsWin(std::unordered_map<ipAddress_win, int> winDistribution);
  29. void writeStatisticsProtocols(std::unordered_map<ipAddress_protocol, entry_protocolStat> protocolDistribution);
  30. void writeStatisticsPorts(std::unordered_map<ipAddress_inOut_port, entry_portStat> portsStatistics);
  31. void writeStatisticsIpMac(std::unordered_map<std::string, std::string> IpMacStatistics);
  32. void writeStatisticsFile(int packetCount, float captureDuration, std::string timestampFirstPkt,
  33. std::string timestampLastPkt, float avgPacketRate, float avgPacketSize,
  34. float avgPacketsSentPerHost, float avgBandwidthIn, float avgBandwidthOut);
  35. void writeStatisticsConv(std::unordered_map<conv, entry_convStat> convStatistics);
  36. void writeStatisticsInterval(std::unordered_map<std::string, entry_intervalStat> intervalStatistics);
  37. void writeDbVersion();
  38. void writeStatisticsUntrackedPDUs(std::unordered_map<untracked_PDU, int> untracked_PDUs);
  39. private:
  40. // Pointer to the SQLite database
  41. std::unique_ptr<SQLite::Database> db;
  42. };
  43. #endif //CPP_PCAPREADER_STATISTICSDB_H