#pragma once #include "interfaces/json_storage.hpp" #include "interfaces/sensor.hpp" #include "interfaces/threshold.hpp" #include "interfaces/trigger.hpp" #include "interfaces/trigger_manager.hpp" #include "sensor.hpp" #include "types/trigger_types.hpp" #include #include #include #include namespace interfaces { class TriggerFactory { public: virtual ~TriggerFactory() = default; virtual std::unique_ptr make( const std::string& id, const std::string& name, const std::vector& triggerActions, const std::vector& reportIds, interfaces::TriggerManager& triggerManager, interfaces::JsonStorage& triggerStorage, const LabeledTriggerThresholdParams& labeledThresholdParams, const std::vector& labeledSensorsInfo) const = 0; virtual std::vector getLabeledSensorsInfo(boost::asio::yield_context& yield, const SensorsInfo& sensorsInfo) const = 0; virtual std::vector getLabeledSensorsInfo(const SensorsInfo& sensorsInfo) const = 0; virtual void updateThresholds( std::vector>& currentThresholds, const std::string& triggerId, const std::vector<::TriggerAction>& triggerActions, const std::shared_ptr>& reportIds, const Sensors& sensors, const LabeledTriggerThresholdParams& newParams) const = 0; virtual void updateSensors( Sensors& currentSensors, const std::vector& labeledSensorsInfo) const = 0; }; } // namespace interfaces