7 #ifndef BASE_CONFIG_BACKEND_POOL_H 8 #define BASE_CONFIG_BACKEND_POOL_H 42 template<
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);
439 #endif // BASE_CONFIG_BACKEND_POOL_H 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.
uint16_t getBackendPort() const
Returns port selected.
std::string toText() const
Returns selections as text.
static Type stringToBackendType(const std::string &type)
Converts string to backend type.
void delAllBackends()
Deletes all backends from the pool.
#define isc_throw(type, stream)
A shortcut macro to insert known values into exception arguments.
std::string getBackendHost() const
Returns host selected.
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.
Server selector for associating objects in a database with specific servers.
Base class for configuration backend pools.
void addBackend(ConfigBackendTypePtr backend)
Adds a backend to the pool.
std::list< ConfigBackendTypePtr > backends_
Holds configuration backends belonging to the pool.
Defines the logger used by the top-level component of kea-dhcp-ddns.
std::list< ConfigBackendTypePtr > selectBackends(const db::BackendSelector &backend_selector) const
Selects existing backends matching the selector.
virtual ~BaseConfigBackendPool()
Virtual destructor.
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.
void delAllBackends(const std::string &db_type)
Deletes all backends of the given type 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.
Error when specified database could not be found in the server configuration.
Type getBackendType() const
Returns backend type selected.
bool amUnspecified() const
Checks if selector is "unspecified".
boost::shared_ptr< ConfigBackendType > ConfigBackendTypePtr
Shared pointer to the Configuration Backend used.
Specification of the database backend to be used yields multiple results.