Thunderbots Project
Loading...
Searching...
No Matches
log_merger.h
1#pragma once
2#include <chrono>
3#include <g3log/logmessage.hpp>
4#include <list>
5#include <string>
6#include <unordered_map>
7
8
13{
14 public:
20 explicit LogMerger(bool enable_merging = true);
21
27 std::list<g3::LogMessage> log(g3::LogMessage &log);
28
33 void pastime();
34
38 g3::LogMessage _addRepeats(g3::LogMessage &log, int repeats);
39
44 std::list<g3::LogMessage> _getOldMessages(
45 std::chrono::_V2::system_clock::time_point current_time);
46
47 const std::chrono::_V2::system_clock::duration LOG_MERGE_DURATION =
48 std::chrono::seconds(2);
49
50 private:
54 struct Message
55 {
56 g3::LogMessage log;
57 std::string msg;
58 std::chrono::_V2::system_clock::time_point timestamp;
59
60 Message(g3::LogMessage &log, std::string msg,
61 std::chrono::_V2::system_clock::time_point timestamp)
62 : log(log), msg(msg), timestamp(timestamp)
63 {
64 }
65 };
66
67 std::unordered_map<std::string, int>
68 repeat_map; // maps string messages to their number of repeats for fast access
69 std::list<Message> message_list; // used to keep track of time order for messages
70
71 std::chrono::_V2::system_clock::duration
72 passed_time; // for testing, time passed manually
73
74 bool enable_merging;
75};
Definition log_merger.h:13
void pastime()
Definition log_merger.cpp:95
std::list< g3::LogMessage > log(g3::LogMessage &log)
Definition log_merger.cpp:8
g3::LogMessage _addRepeats(g3::LogMessage &log, int repeats)
Definition log_merger.cpp:69
std::list< g3::LogMessage > _getOldMessages(std::chrono::_V2::system_clock::time_point current_time)
Definition log_merger.cpp:41