/** * Exercise Handler - checks the avilable exercises and creates subhandlers fort each of them * $Id$ * $HeadURL$ * $Author$ * Created by Christian Ehrlicher, SLSE, 2016-04-14 */ #pragma once #include #include #include "dds_handler_exercise.h" #include namespace WarehouseManagement { class ExercisesHandler; class ExerciseParticipantHandler : public QObject, protected ParticipantManagement::Interface::Ftc::RegisterParticipantReplyHandler { Q_OBJECT public: ExerciseParticipantHandler(const dds::domain::DomainParticipant &domainParticipant, int exerciseId, ExercisesHandler *exercisesHandler); ~ExerciseParticipantHandler(); bool init(); ParticipantManagement::Party getParty(int partyId) const; QString getHierarchyFromParticipant(int participantId, const QMap &allParticipants) const; QMap getParticipants() const; ParticipantManagement::Participant getParticipant(int participantId) const; void registerParticipant(qint32 participantId, ParticipantManagement::ParticipantAssignState assignState, const dds::core::optional &equipNo, const dds::core::optional &identification, const dds::core::optional &info); Q_SIGNALS: void registrationReturnValue(int exerciseId, qint32 participantId, ParticipantManagement::RegisterReturnValue retValue); void participantChanged(const ParticipantManagement::Participant&, DataModification modType, int exerciseId); private: void participantAdded(const ParticipantManagement::Participant &participant); void participantModified(const ParticipantManagement::Participant &participant); void participantRemoved(const ParticipantManagement::Participant &participant); void emitChangedForInferiors(const ParticipantManagement::Participant &participant); void addParticipant(int participantId, int equipmentNumber); void removeParticipant(int participantId, int equipmentNumber); private Q_SLOTS: void onParticipantChanged(const ParticipantManagement::Participant &data, DataModification modType); void onPartyChanged(const ParticipantManagement::Party &data, DataModification modType); void onRegisterParticipantReply(const ParticipantManagement::RegisterReply &reply) override final; private: int m_exerciseId; std::shared_ptr m_ddsHandlerExercise; // for the specific exercise ExercisesHandler *m_exercisesHandler; // QMultiMap QHash m_participantId2EquipmentNumber; QHash m_partyMap; NGL::INGLLogger &m_logger; }; } // namespace WarehouseManagement