#pragma once #include "interfaces/report_manager.hpp" #include "interfaces/sensor.hpp" #include "interfaces/threshold.hpp" #include "interfaces/trigger_factory.hpp" #include "sensor_cache.hpp" #include "utils/dbus_mapper.hpp" #include class TriggerFactory : public interfaces::TriggerFactory { public: TriggerFactory(std::shared_ptr bus, std::shared_ptr objServer, SensorCache& sensorCache, interfaces::ReportManager& reportManager); 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 override; std::vector getLabeledSensorsInfo(boost::asio::yield_context& yield, const SensorsInfo& sensorsInfo) const override; std::vector getLabeledSensorsInfo(const SensorsInfo& sensorsInfo) const override; void updateThresholds( std::vector>& currentThresholds, const std::vector& triggerActions, const std::shared_ptr>& reportIds, const Sensors& sensors, const LabeledTriggerThresholdParams& newParams) const override; void updateSensors(Sensors& currentSensors, const std::vector& labeledSensorsInfo) const override; private: std::shared_ptr bus; std::shared_ptr objServer; SensorCache& sensorCache; interfaces::ReportManager& reportManager; Sensors getSensors( const std::vector& labeledSensorsInfo) const; static std::vector parseSensorTree(const std::vector& tree, const SensorsInfo& sensorsInfo); void updateDiscreteThresholds( std::vector>& currentThresholds, const std::vector& triggerActions, const std::shared_ptr>& reportIds, const Sensors& sensors, const std::vector& newParams) const; void updateNumericThresholds( std::vector>& currentThresholds, const std::vector& triggerActions, const std::shared_ptr>& reportIds, const Sensors& sensors, const std::vector& newParams) const; void makeDiscreteThreshold( std::vector>& thresholds, const std::vector& triggerActions, const std::shared_ptr>& reportIds, const Sensors& sensors, const discrete::LabeledThresholdParam& thresholdParam) const; void makeNumericThreshold( std::vector>& thresholds, const std::vector& triggerActions, const std::shared_ptr>& reportIds, const Sensors& sensors, const numeric::LabeledThresholdParam& thresholdParam) const; void makeOnChangeThreshold( std::vector>& thresholds, const std::vector& triggerActions, const std::shared_ptr>& reportIds, const Sensors& sensors) const; };