/** * Handler for all notifcation objects * $Id$ * $HeadURL$ * $Author$ * Created by Hanna E. Rathje, ESZS, 2025-06-23 */ #pragma once #include "dds_handler.h" #include #include namespace NotificationManagement { // Forwarddeclarations class DdsHandler; class ObjectNotification; class HandlerNotification final : public QObject , protected Interface::Fts::CreateNotificationRequestHandler , protected Interface::Fts::ReadReceiptRequestHandler , protected Interface::Fts::DeleteMessageRequestHandler { Q_OBJECT public: explicit HandlerNotification(const std::shared_ptr &ddsHandler, const std::shared_ptr &db); ~HandlerNotification(); bool init(); private: // methods void onCreateNotificationRequest(const rti::core::SampleIdentity &cookie, const CreateNotification &request) override final; void onReadReceiptRequest(const rti::core::SampleIdentity &cookie, const ReadReceipt &request) override final; void onDeleteMessageRequest(const rti::core::SampleIdentity &cookie, const DeleteMessage &request) override final; bool isRemoveable(const NomNotification ¬if); private slots: void onExerciseChanged(const ExerciseManagement::Exercise &data, DataModification modType); void onCheckRemove(); private: // attributes QTimer* m_removeNotificationTimer; std::shared_ptr m_ddsHandler; std::shared_ptr m_db; NGL::INGLLogger &m_logger; QHash m_objectNotificationMap; // Key = notificationId }; } // namespace NotificationManagement