LCOV - code coverage report
Current view: top level - src/Communicate - LogEntry.cpp (source / functions) Coverage Total Hit
Test: final_report.info Lines: 93.5 % 46 43
Test Date: 2025-07-19 00:25:23 Functions: 100.0 % 4 4

            Line data    Source code
       1              : #include "Communicate/LogEntry.h"
       2              : 
       3              : namespace ippl {
       4              : 
       5           24 :     void serializeString(std::vector<char>& buffer, const std::string& str) {
       6           24 :         size_t length = str.size();
       7           24 :         serializeBasicType(buffer, length);  // First, serialize the length of the string
       8           24 :         buffer.insert(buffer.end(), str.begin(), str.end());  // Then, serialize the string itself
       9           24 :     }
      10              : 
      11           12 :     std::string deserializeString(const std::vector<char>& buffer, size_t& offset) {
      12              :         size_t length =
      13           12 :             deserializeBasicType<size_t>(buffer, offset);  // Get the length of the string
      14            0 :         std::string str(buffer.begin() + offset,
      15           12 :                         buffer.begin() + offset + length);  // Extract the string
      16           12 :         offset += length;
      17           12 :         return str;
      18              :     }
      19              : 
      20            4 :     std::vector<char> LogEntry::serialize() const {
      21            4 :         std::vector<char> buffer;
      22              : 
      23            4 :         serializeString(buffer, methodName);
      24            4 :         serializeBasicType(buffer, usedSize);
      25            4 :         serializeBasicType(buffer, freeSize);
      26            4 :         serializeString(buffer, memorySpace);
      27            4 :         serializeBasicType(buffer, rank);
      28              : 
      29              :         // Serialize the timestamp (as duration since epoch)
      30            4 :         auto duration = timestamp.time_since_epoch().count();
      31            4 :         serializeBasicType(buffer, duration);
      32              : 
      33            4 :         size_t mapSize = parameters.size();
      34            4 :         serializeBasicType(buffer, mapSize);
      35           12 :         for (const auto& pair : parameters) {
      36            8 :             serializeString(buffer, pair.first);
      37            8 :             serializeString(buffer, pair.second);
      38              :         }
      39              : 
      40            4 :         return buffer;
      41            0 :     }
      42              : 
      43            2 :     LogEntry LogEntry::deserialize(const std::vector<char>& buffer, size_t offset) {
      44            2 :         LogEntry entry;
      45            2 :         size_t current_pos = offset;
      46              : 
      47            2 :         entry.methodName  = deserializeString(buffer, current_pos);
      48            2 :         entry.usedSize    = deserializeBasicType<size_t>(buffer, current_pos);
      49            2 :         entry.freeSize    = deserializeBasicType<size_t>(buffer, current_pos);
      50            2 :         entry.memorySpace = deserializeString(buffer, current_pos);
      51            2 :         entry.rank        = deserializeBasicType<int>(buffer, current_pos);
      52              : 
      53            2 :         auto duration   = deserializeBasicType<long long>(buffer, current_pos);
      54            2 :         entry.timestamp = std::chrono::time_point<std::chrono::high_resolution_clock>(
      55            2 :             std::chrono::high_resolution_clock::duration(duration));
      56              : 
      57            2 :         size_t mapSize = deserializeBasicType<size_t>(buffer, current_pos);
      58            6 :         for (size_t i = 0; i < mapSize; ++i) {
      59            4 :             std::string key       = deserializeString(buffer, current_pos);
      60            4 :             std::string value     = deserializeString(buffer, current_pos);
      61            4 :             entry.parameters[key] = value;
      62            4 :         }
      63              : 
      64            2 :         return entry;
      65            0 :     }
      66              : 
      67              : }  // namespace ippl
        

Generated by: LCOV version 2.0-1