39 lines
1.7 KiB
C++
39 lines
1.7 KiB
C++
#pragma once
|
|
|
|
#include <api/requirement.h>
|
|
#include <dBus/dBus.h>
|
|
#include <thread>
|
|
|
|
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<dBus::Message>;
|
|
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
|