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