7#ifndef BASE_CONFIG_BACKEND_POOL_H
8#define BASE_CONFIG_BACKEND_POOL_H
42template<
typename ConfigBackendType>
68 typename std::list<ConfigBackendTypePtr>::iterator backend =
backends_.begin();
71 if ((*backend)->getType() == db_type) {
128 template<
typename PropertyType,
typename... FnPtrArgs,
typename... Args>
133 PropertyType& property,
134 Args... input)
const {
140 property = ((*backend).*MethodPointer)(server_selector, input...);
149 if (!backends.empty()) {
150 for (
auto backend : backends) {
151 property = ((*backend).*MethodPointer)(server_selector, input...);
159 << backend_selector.
toText());
210 template<
typename PropertyCollectionType,
typename... FnPtrArgs,
typename... Args>
215 PropertyCollectionType& properties,
216 Args... input)
const {
219 properties = ((*backend).*MethodPointer)(server_selector, input...);
220 if (!properties.empty()) {
227 if (!backends.empty()) {
228 for (
auto backend : backends) {
229 properties = ((*backend).*MethodPointer)(server_selector, input...);
230 if (!properties.empty()) {
237 << backend_selector.
toText());
281 template<
typename PropertyCollectionType>
286 PropertyCollectionType& properties)
const {
289 properties = ((*backend).*MethodPointer)(server_selector);
290 if (!properties.empty()) {
297 if (!backends.empty()) {
298 for (
auto backend : backends) {
299 properties = ((*backend).*MethodPointer)(server_selector);
300 if (!properties.empty()) {
307 << backend_selector.
toText());
359 template<
typename ReturnValue,
typename... FnPtrArgs,
typename... Args>
366 if (backends.empty()) {
368 << backend_selector.
toText());
370 }
else if (backends.size() > 1) {
372 "selector: " << backend_selector.
toText());
375 return ((*(*(backends.begin())).*MethodPointer)(server_selector, input...));
384 std::list<ConfigBackendTypePtr>
387 std::list<ConfigBackendTypePtr> selected;
426 selected.push_back(backend);
Base class for configuration backend pools.
void getPropertyPtrConst(PropertyType(ConfigBackendType::*MethodPointer)(const db::ServerSelector &, FnPtrArgs...) const, const db::BackendSelector &backend_selector, const db::ServerSelector &server_selector, PropertyType &property, Args... input) const
Retrieve a single configuration property from the pool.
boost::shared_ptr< ConfigBackendType > ConfigBackendTypePtr
Shared pointer to the Configuration Backend used.
void delAllBackends()
Deletes all backends from the pool.
ReturnValue createUpdateDeleteProperty(ReturnValue(ConfigBackendType::*MethodPointer)(const db::ServerSelector &, FnPtrArgs...), const db::BackendSelector &backend_selector, const db::ServerSelector &server_selector, Args... input)
Add, update or delete property from the backend.
void delAllBackends(const std::string &db_type)
Deletes all backends of the given type from the pool.
void getMultiplePropertiesConst(PropertyCollectionType(ConfigBackendType::*MethodPointer)(const db::ServerSelector &, FnPtrArgs...) const, const db::BackendSelector &backend_selector, const db::ServerSelector &server_selector, PropertyCollectionType &properties, Args... input) const
Retrieve multiple configuration properties from the pool.
void addBackend(ConfigBackendTypePtr backend)
Adds a backend to the pool.
std::list< ConfigBackendTypePtr > selectBackends(const db::BackendSelector &backend_selector) const
Selects existing backends matching the selector.
void getAllPropertiesConst(PropertyCollectionType(ConfigBackendType::*MethodPointer)(const db::ServerSelector &) const, const db::BackendSelector &backend_selector, const db::ServerSelector &server_selector, PropertyCollectionType &properties) const
Retrieve all configuration properties from the pool.
virtual ~BaseConfigBackendPool()
Virtual destructor.
std::list< ConfigBackendTypePtr > backends_
Holds configuration backends belonging to the pool.
Specification of the database backend to be used yields multiple results.
Type getBackendType() const
Returns backend type selected.
std::string toText() const
Returns selections as text.
static Type stringToBackendType(const std::string &type)
Converts string to backend type.
std::string getBackendHost() const
Returns host selected.
uint16_t getBackendPort() const
Returns port selected.
bool amUnspecified() const
Checks if selector is "unspecified".
Error when specified database could not be found in the server configuration.
Server selector for associating objects in a database with specific servers.
#define isc_throw(type, stream)
A shortcut macro to insert known values into exception arguments.
Defines the logger used by the top-level component of kea-dhcp-ddns.