diff --git a/plugins/amda/include/AmdaServer.h b/plugins/amda/include/AmdaServer.h index 9c6c0f1..1f836d3 100644 --- a/plugins/amda/include/AmdaServer.h +++ b/plugins/amda/include/AmdaServer.h @@ -7,6 +7,11 @@ Q_DECLARE_LOGGING_CATEGORY(LOG_AmdaServer) +// Directive used to determine the active AMDA server +#ifndef SCIQLOP_AMDA_SERVER +#define SCIQLOP_AMDA_SERVER "default" +#endif + /** * @brief The AmdaServer class represents the server used to retrieve AMDA data (singleton). * diff --git a/plugins/amda/src/AmdaServer.cpp b/plugins/amda/src/AmdaServer.cpp index 3cda4c5..73956b9 100644 --- a/plugins/amda/src/AmdaServer.cpp +++ b/plugins/amda/src/AmdaServer.cpp @@ -18,9 +18,28 @@ public: QString url() const override { return QStringLiteral("amdatest.irap.omp.eu"); } }; +/// @return an AMDA server instance created from the name of the server passed in parameter. If the +/// name does not match any known server, a default server instance is created +std::unique_ptr createInstance(const QString &server) +{ + if (server == QString{"amdatest"}) { + return std::make_unique(); + } + else { + if (server != QString{"default"}) { + qCWarning(LOG_AmdaServer()) + << QObject::tr("Unknown server '%1': default AMDA server will be used").arg(server); + } + + return std::make_unique(); + } +} + } // namespace AmdaServer &AmdaServer::instance() { - /// @todo ALX + // Creates instance depending on the SCIQLOP_AMDA_SERVER value at compile time + static auto instance = createInstance(SCIQLOP_AMDA_SERVER); + return *instance; }