#pragma once #include #include #include namespace core::requirementManager { //-------------------------------------------------------------- class RequirementManager : public dBus::Node { public: RequirementManager() = delete; // Default constructor virtual ~RequirementManager(); // Default destructor RequirementManager(const RequirementManager &obj) = delete; // Copy constructor RequirementManager(RequirementManager &&obj) noexcept = delete; // Move constructor RequirementManager &operator=(const RequirementManager &obj) = delete; // Copy assignment operator RequirementManager &operator=(RequirementManager &&obj) noexcept = delete; // Move assignment operator explicit RequirementManager(dBus::Bus &bus); // Constructor protected: // dBus::Bus &m_bus; // Reference to the application bus api::requirement::Requirement m_rootRequirement; private: api::requirement::Requirement &getRootRequirement(); // Get the root requirement // dBus management using Message_ptr = std::shared_ptr; void runBusListener(); // Run the bus listener thread void stopBusListener(); // Stop the bus listener thread void processMessageBus(const Message_ptr &message); // Process a message received from the bus std::jthread m_busListenerThread; // Thread for listening to bus messages related to requirements }; //-------------------------------------------------------------- } // namespace core::requirementManager