limitations under the License.
*/
+/*
+ * This source code is part of the near-RT RIC (RAN Intelligent Controller)
+ * platform project (RICP).
+*/
+
#ifndef SHAREDDATALAYER_REDIS_ASYNCSTORAGEIMPL_HPP_
#define SHAREDDATALAYER_REDIS_ASYNCSTORAGEIMPL_HPP_
+#include <functional>
#include <sdl/asyncstorage.hpp>
#include <sdl/publisherid.hpp>
#include "private/configurationreader.hpp"
#include "private/databaseconfigurationimpl.hpp"
#include "private/logger.hpp"
#include "private/namespaceconfigurationsimpl.hpp"
+#include "private/redis/asyncdatabasediscovery.hpp"
+#include "private/redis/asyncredisstorage.hpp"
namespace shareddatalayer
{
class AsyncStorageImpl: public AsyncStorage
{
public:
+ using AsyncDatabaseDiscoveryCreator = std::function<std::shared_ptr<redis::AsyncDatabaseDiscovery>(std::shared_ptr<Engine> engine,
+ const std::string& ns,
+ const DatabaseConfiguration& databaseConfiguration,
+ const boost::optional<std::size_t>& addressIndex,
+ std::shared_ptr<Logger> logger)>;
+
AsyncStorageImpl(const AsyncStorageImpl&) = delete;
AsyncStorageImpl& operator = (const AsyncStorageImpl&) = delete;
const boost::optional<PublisherId>& pId,
std::shared_ptr<DatabaseConfiguration> databaseConfiguration,
std::shared_ptr<NamespaceConfigurations> namespaceConfigurations,
- std::shared_ptr<Logger> logger);
+ std::shared_ptr<Logger> logger,
+ const AsyncDatabaseDiscoveryCreator& asyncDatabaseDiscoveryCreator);
int fd() const override;
void findKeysAsync(const Namespace& ns, const std::string& keyPrefix, const FindKeysAck& findKeysAck) override;
+ void listKeys(const Namespace& ns, const std::string& pattern, const FindKeysAck& findKeysAck) override;
+
void removeAllAsync(const Namespace& ns, const ModifyAck& modifyAck) override;
//public for UT
std::shared_ptr<NamespaceConfigurations> namespaceConfigurations;
const boost::optional<PublisherId> publisherId;
std::shared_ptr<Logger> logger;
+ AsyncDatabaseDiscoveryCreator asyncDatabaseDiscoveryCreator;
- AsyncStorage& getRedisHandler();
+ std::vector<std::shared_ptr<AsyncRedisStorage>> asyncStorages;
+
+ AsyncStorage& getRedisHandler(const std::string& ns);
AsyncStorage& getDummyHandler();
+
+ void setAsyncRedisStorageHandlers(const std::string& ns);
+ void setAsyncRedisStorageHandlersForCluster(const std::string& ns);
+ AsyncStorage& getAsyncRedisStorageHandler(const std::string& ns);
};
}