176833cb5SWludzik, Jozef #pragma once 276833cb5SWludzik, Jozef 3a4e67616SCezary Zwolak #include "interfaces/json_storage.hpp" 494f71c51SSzymon Dompke #include "interfaces/sensor.hpp" 594f71c51SSzymon Dompke #include "interfaces/threshold.hpp" 676833cb5SWludzik, Jozef #include "interfaces/trigger.hpp" 776833cb5SWludzik, Jozef #include "interfaces/trigger_manager.hpp" 894f71c51SSzymon Dompke #include "sensor.hpp" 9dcc4e193SKrzysztof Grobelny #include "types/trigger_types.hpp" 1076833cb5SWludzik, Jozef 111477fe6aSWludzik, Jozef #include <boost/asio/spawn.hpp> 12d960e1f3SWludzik, Jozef #include <sdbusplus/message/types.hpp> 131477fe6aSWludzik, Jozef 1476833cb5SWludzik, Jozef #include <memory> 1576833cb5SWludzik, Jozef #include <utility> 1676833cb5SWludzik, Jozef 1776833cb5SWludzik, Jozef namespace interfaces 1876833cb5SWludzik, Jozef { 1976833cb5SWludzik, Jozef 2076833cb5SWludzik, Jozef class TriggerFactory 2176833cb5SWludzik, Jozef { 2276833cb5SWludzik, Jozef public: 2376833cb5SWludzik, Jozef virtual ~TriggerFactory() = default; 2476833cb5SWludzik, Jozef 2576833cb5SWludzik, Jozef virtual std::unique_ptr<interfaces::Trigger> make( 26e28aa53dSSzymon Dompke const std::string& id, const std::string& name, 27e28aa53dSSzymon Dompke const std::vector<std::string>& triggerActions, 28b8cc78ddSKrzysztof Grobelny const std::vector<std::string>& reportIds, 29a4e67616SCezary Zwolak interfaces::TriggerManager& triggerManager, 304416fce6SCezary Zwolak interfaces::JsonStorage& triggerStorage, 314416fce6SCezary Zwolak const LabeledTriggerThresholdParams& labeledThresholdParams, 324416fce6SCezary Zwolak const std::vector<LabeledSensorInfo>& labeledSensorsInfo) const = 0; 334416fce6SCezary Zwolak 344416fce6SCezary Zwolak virtual std::vector<LabeledSensorInfo> 354416fce6SCezary Zwolak getLabeledSensorsInfo(boost::asio::yield_context& yield, 364416fce6SCezary Zwolak const SensorsInfo& sensorsInfo) const = 0; 3794f71c51SSzymon Dompke 3894f71c51SSzymon Dompke virtual std::vector<LabeledSensorInfo> 3994f71c51SSzymon Dompke getLabeledSensorsInfo(const SensorsInfo& sensorsInfo) const = 0; 4094f71c51SSzymon Dompke 4194f71c51SSzymon Dompke virtual void updateThresholds( 4294f71c51SSzymon Dompke std::vector<std::shared_ptr<interfaces::Threshold>>& currentThresholds, 43*b7b7e1b6SSzymon Dompke const std::string& triggerId, 4494f71c51SSzymon Dompke const std::vector<::TriggerAction>& triggerActions, 4594f71c51SSzymon Dompke const std::shared_ptr<std::vector<std::string>>& reportIds, 4694f71c51SSzymon Dompke const Sensors& sensors, 4794f71c51SSzymon Dompke const LabeledTriggerThresholdParams& newParams) const = 0; 4894f71c51SSzymon Dompke 4994f71c51SSzymon Dompke virtual void updateSensors( 5094f71c51SSzymon Dompke Sensors& currentSensors, 5194f71c51SSzymon Dompke const std::vector<LabeledSensorInfo>& labeledSensorsInfo) const = 0; 5276833cb5SWludzik, Jozef }; 5376833cb5SWludzik, Jozef 5476833cb5SWludzik, Jozef } // namespace interfaces 55