#pragma once #include "persistent_json_storage.hpp" #include "report_factory.hpp" #include "report_manager.hpp" #include "sensor_cache.hpp" #include "trigger_factory.hpp" #include "trigger_manager.hpp" #include <sdbusplus/asio/connection.hpp> #include <sdbusplus/asio/object_server.hpp> #include <memory> class Telemetry { public: explicit Telemetry(std::shared_ptr<sdbusplus::asio::connection> bus) : objServer(std::make_shared<sdbusplus::asio::object_server>(bus)), reportManager( std::make_unique<ReportFactory>(bus, objServer, sensorCache), std::make_unique<PersistentJsonStorage>( interfaces::JsonStorage::DirectoryPath( "/var/lib/telemetry/Reports")), objServer), triggerManager( std::make_unique<TriggerFactory>(bus, objServer, sensorCache), std::make_unique<PersistentJsonStorage>( interfaces::JsonStorage::DirectoryPath( "/var/lib/telemetry/Triggers")), objServer) {} private: std::shared_ptr<sdbusplus::asio::object_server> objServer; mutable SensorCache sensorCache; ReportManager reportManager; TriggerManager triggerManager; };