##// END OF EJS Templates
Adds "hybrid" server mode...
Adds "hybrid" server mode Hybrid mode allows to use both the default server and the test server, depending on the "server" setting of each product in the JSON file

File last commit:

r1151:7dc72cc510ff
r1151:7dc72cc510ff
Show More
AmdaServer.cpp
78 lines | 2.4 KiB | text/x-c | CppLexer
Alexandre Leroux
Creates AMDAServer class...
r1144 #include "AmdaServer.h"
Alexandre Leroux
Adds "hybrid" server mode...
r1151 #include "AmdaDefs.h"
Alexandre Leroux
Creates AMDAServer class...
r1144 Q_LOGGING_CATEGORY(LOG_AmdaServer, "AmdaServer")
Alexandre Leroux
Creates AMDA implementations (default and AMDA test)
r1145 namespace {
Alexandre Leroux
Adds "hybrid" server mode...
r1151 /// URL of the default AMDA server
const auto AMDA_DEFAULT_SERVER_URL = QStringLiteral("amda.irap.omp.eu");
/// URL of the AMDA test server
const auto AMDA_TEST_SERVER_URL = QStringLiteral("amdatest.irap.omp.eu");
Alexandre Leroux
Creates AMDA implementations (default and AMDA test)
r1145 /// Default AMDA server
struct AmdaDefaultServer : public AmdaServer {
public:
QString name() const override { return QStringLiteral("AMDA (default)"); }
Alexandre Leroux
Adds "hybrid" server mode...
r1151 QString url(const QVariantHash &properties) const override
{
Q_UNUSED(properties);
return AMDA_DEFAULT_SERVER_URL;
}
Alexandre Leroux
Creates AMDA implementations (default and AMDA test)
r1145 };
/// Alternative AMDA server (tests)
struct AmdaTestServer : public AmdaServer {
public:
QString name() const override { return QStringLiteral("AMDA (test)"); }
Alexandre Leroux
Adds "hybrid" server mode...
r1151 QString url(const QVariantHash &properties) const override
{
Q_UNUSED(properties);
return AMDA_TEST_SERVER_URL;
}
};
/// Hybrid AMDA server: use both of default and test server.
/// The server used is relative to each product for which to retrieve url, according to its "server"
/// property
struct AmdaHybridServer : public AmdaServer {
public:
QString name() const override { return QStringLiteral("AMDA (hybrid)"); }
QString url(const QVariantHash &properties) const override
{
// Reads "server" property to determine which server url to use
auto server = properties.value(AMDA_SERVER_KEY).toString();
return server == QString{"amdatest"} ? AMDA_TEST_SERVER_URL : AMDA_DEFAULT_SERVER_URL;
}
Alexandre Leroux
Creates AMDA implementations (default and AMDA test)
r1145 };
Alexandre Leroux
Determines AMDA server at compile time
r1146 /// @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<AmdaServer> createInstance(const QString &server)
{
if (server == QString{"amdatest"}) {
return std::make_unique<AmdaTestServer>();
}
Alexandre Leroux
Adds "hybrid" server mode...
r1151 else if (server == QString{"hybrid"}) {
return std::make_unique<AmdaHybridServer>();
}
Alexandre Leroux
Determines AMDA server at compile time
r1146 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<AmdaDefaultServer>();
}
}
Alexandre Leroux
Creates AMDA implementations (default and AMDA test)
r1145 } // namespace
Alexandre Leroux
Creates AMDAServer class...
r1144 AmdaServer &AmdaServer::instance()
{
Alexandre Leroux
Determines AMDA server at compile time
r1146 // Creates instance depending on the SCIQLOP_AMDA_SERVER value at compile time
static auto instance = createInstance(SCIQLOP_AMDA_SERVER);
return *instance;
Alexandre Leroux
Creates AMDAServer class...
r1144 }