X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;ds=inline;f=src%2Fredis%2Fasyncdatabasediscovery.cpp;fp=src%2Fredis%2Fasyncdatabasediscovery.cpp;h=892e7cc0ab69883003771c9552080927c205f11a;hb=ef2bf51d04aaf01fa0cabdcaf905b23423067662;hp=0000000000000000000000000000000000000000;hpb=edc9b96a441194b571e8d55ec1603b5be0ea52eb;p=ric-plt%2Fsdl.git diff --git a/src/redis/asyncdatabasediscovery.cpp b/src/redis/asyncdatabasediscovery.cpp new file mode 100644 index 0000000..892e7cc --- /dev/null +++ b/src/redis/asyncdatabasediscovery.cpp @@ -0,0 +1,63 @@ +/* + Copyright (c) 2018-2019 Nokia. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +#include "private/redis/asyncdatabasediscovery.hpp" +#include "private/databaseconfiguration.hpp" +#include "private/logger.hpp" +#include +#include "config.h" +#if HAVE_HIREDIS +#include "private/redis/asynchiredisdatabasediscovery.hpp" +#endif +#include "private/abort.hpp" + +using namespace shareddatalayer::redis; + +std::shared_ptr AsyncDatabaseDiscovery::create(std::shared_ptr engine, + const boost::optional& ns, + const DatabaseConfiguration& staticDatabaseConfiguration, + std::shared_ptr logger) +{ + auto staticAddresses(staticDatabaseConfiguration.getServerAddresses()); + + if (staticAddresses.empty()) + staticAddresses = staticDatabaseConfiguration.getDefaultServerAddresses(); + + auto staticDbType(staticDatabaseConfiguration.getDbType()); + + if (staticDbType == DatabaseConfiguration::DbType::REDIS_CLUSTER) +#if HAVE_HIREDIS_VIP + return std::make_shared(engine, + ns, + DatabaseInfo::Type::CLUSTER, + staticAddresses, + logger); +#else + SHAREDDATALAYER_ABORT("No Hiredis vip for Redis cluster configuration"); +#endif + else +#if HAVE_HIREDIS + return std::make_shared(engine, + ns, + DatabaseInfo::Type::SINGLE, + staticAddresses, + logger); +#else + static_cast(logger); + SHAREDDATALAYER_ABORT("No Hiredis"); +#endif +} +