blob: c1499b8e76a835462e270dd6cbe27bdf66e30299 [file] [log] [blame]
James Kuszmaule4853542023-05-15 20:35:48 -07001#ifndef AOS_UTIL_SIMULATION_LOGGER_H_
2#define AOS_UTIL_SIMULATION_LOGGER_H_
Stephan Pleinesb1177672024-05-27 17:48:32 -07003#include <memory>
4#include <string>
James Kuszmaule4853542023-05-15 20:35:48 -07005#include <string_view>
Stephan Pleinesb1177672024-05-27 17:48:32 -07006#include <vector>
James Kuszmaule4853542023-05-15 20:35:48 -07007
Stephan Pleinesb1177672024-05-27 17:48:32 -07008#include "aos/configuration_generated.h"
9#include "aos/events/event_loop.h"
10#include "aos/events/logging/log_namer.h"
James Kuszmaule4853542023-05-15 20:35:48 -070011#include "aos/events/logging/log_writer.h"
12#include "aos/events/simulated_event_loop.h"
Stephan Pleinesb1177672024-05-27 17:48:32 -070013
James Kuszmaule4853542023-05-15 20:35:48 -070014namespace aos::util {
15
16class LoggerState {
17 public:
18 LoggerState(aos::SimulatedEventLoopFactory *factory, const aos::Node *node,
Pallavi Madhukar3076d5c2023-09-09 10:23:26 -070019 std::string_view output_folder,
20 bool do_skip_timing_report = true);
James Kuszmaule4853542023-05-15 20:35:48 -070021
22 private:
23 std::unique_ptr<aos::EventLoop> event_loop_;
24 std::unique_ptr<aos::logger::LogNamer> namer_;
25 std::unique_ptr<aos::logger::Logger> logger_;
26};
27
28// Creates a logger for each of the specified nodes. This makes it so that you
29// can easily setup some number of loggers in simulation or log replay without
30// needing to redo all the boilerplate every time.
31std::vector<std::unique_ptr<LoggerState>> MakeLoggersForNodes(
32 aos::SimulatedEventLoopFactory *factory,
33 const std::vector<std::string> &nodes_to_log,
Pallavi Madhukar3076d5c2023-09-09 10:23:26 -070034 std::string_view output_folder, bool do_skip_timing_report = true);
James Kuszmaule4853542023-05-15 20:35:48 -070035
36// Creates loggers for all of the nodes.
37std::vector<std::unique_ptr<LoggerState>> MakeLoggersForAllNodes(
Pallavi Madhukar3076d5c2023-09-09 10:23:26 -070038 aos::SimulatedEventLoopFactory *factory, std::string_view output_folder,
39 bool do_skip_timing_report = true);
James Kuszmaule4853542023-05-15 20:35:48 -070040
41} // namespace aos::util
42#endif // AOS_UTIL_SIMULATION_LOGGER_H_