mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-11-24 16:42:05 +00:00
38 lines
1.0 KiB
C++
38 lines
1.0 KiB
C++
#pragma once
|
|
|
|
#include "SharedLibraryHandler.h"
|
|
#include <unordered_map>
|
|
#include <mutex>
|
|
|
|
|
|
namespace DB
|
|
{
|
|
|
|
/// Each library dictionary source has unique UUID. When clone() method is called, a new UUID is generated.
|
|
/// There is a unique mapping from diciotnary UUID to sharedLibraryHandler.
|
|
class SharedLibraryHandlerFactory final : private boost::noncopyable
|
|
{
|
|
public:
|
|
static SharedLibraryHandlerFactory & instance();
|
|
|
|
SharedLibraryHandlerPtr get(const std::string & dictionary_id);
|
|
|
|
void create(
|
|
const std::string & dictionary_id,
|
|
const std::string & library_path,
|
|
const std::vector<std::string> & library_settings,
|
|
const Block & sample_block,
|
|
const std::vector<std::string> & attributes_names);
|
|
|
|
void clone(const std::string & from_dictionary_id, const std::string & to_dictionary_id);
|
|
|
|
void remove(const std::string & dictionary_id);
|
|
|
|
private:
|
|
/// map: dict_id -> sharedLibraryHandler
|
|
std::unordered_map<std::string, SharedLibraryHandlerPtr> library_handlers;
|
|
std::mutex mutex;
|
|
};
|
|
|
|
}
|