/** * Handler for infrastructure data * $Id$ * $HeadURL$ * $Author$ * Created by hjl, SLSE, 2016-07-22 */ #pragma once #include "dds_handler.h" #include "logger.h" #include #include #include namespace VideoOverlayManagement { class HandlerInfrastructureData : public QObject { Q_OBJECT public: explicit HandlerInfrastructureData(const std::shared_ptr &ddsHandler, QObject *parent = nullptr); ~HandlerInfrastructureData(); /** * Initialize the handler to manage information from infrastructure management */ bool init(int exerciseId); /** * Check if there is a camera in the room * @param[in] roomId Id of the room to get information about camera availability * @returns true if camera is available, otherwise false */ bool isCameraAvailable(int roomId) const; /** * Returns the streamname of the camera for the given roomId * @param[in] roomId Id of the room to get the streamname for this camera * @returns returns the streamname if camera is available, otherwise string is empty */ QString getStreamNameFromRoomId(int roomId) const; Q_SIGNALS: private Q_SLOTS: /** * Handle the signals from 'InfrastructureManagement' */ void onAssetChanged(const InfrastructureManagement::InstrumentationAsset &data, DataModification modType); private: // methoden /** * Returns the room id for the given assetId * @param[in] assetId Id of the asset to get the room id for * @returns returns the room id if available, otherwise -1 */ int getRoomIdFromAssetId(int assetId) const; private: // attributes std::shared_ptr m_ddsHandler; ///< Pointer to VOM DDS handler std::shared_ptr m_dtc; ///< Pointer to DTC InfrastructureManagement interface object QMap m_assetId2RoomIdMap; ///< optional nur noetig bei subscribe for AssetChanged QMap m_roomId2CameraNameMap; ///< Reference map roomId to camera name(roomId, cameraName) Condition: per room one camera! int m_exerciseId; NGL::INGLLogger &m_logger; ///< Interface to the Logging-Facility }; } // namespace VideoOverlayManagement