/** * LicenceHandler class. * $Id$ * $HeadURL$ * $Author$ * Created by hjl, SLSE, 2016-05-11 */ #pragma once #include "licence_donator.h" #include "dds_handler.h" #include "logger.h" #include #include #include #include namespace ServiceManagement { class LicenceHandler final : public QObject , public LicenceDonator , protected Interface::Fts::GetLicenceRequestHandler , protected Interface::Fts::FreeLicenceRequestHandler { Q_OBJECT public: explicit LicenceHandler(const std::shared_ptr &ddsHandler, const QString &licenceFile); ~LicenceHandler(); bool init(); bool isServiceLicensed(const QString &licenceName) const; void onGetLicenceRequest(const rti::core::SampleIdentity &cookie, const LicenceRequest &request) override; void onFreeLicenceRequest(const rti::core::SampleIdentity &cookie, const LicenceRequest &request) override; bool getLicence(const QString &licenceName) override; bool freeLicence(const QString &licenceName) override; private: // Methoden bool readLicenceFile(); Core::FunctionReplyObject getLicenceInternal(const QString &licenceName); Core::FunctionReplyObject freeLicenceInternal(const QString &licenceName); bool isLicenceValid(const LtsLicence::Licence &licence) const; static QString dumpLicenceInformation(const LtsLicence::Licence &licence); void publishAllData(); void publishData(const LtsLicence::Licence &data); ServiceManagement::LicenceInformation toDdsData(const LtsLicence::Licence &data); private: // attributes std::shared_ptr m_ddsHandler; QString m_xmlFileName; QVector m_licenceVec; NGL::INGLLogger &m_logger; }; // class LicenceHandler } // namespace ServiceManagement