Kea 2.2.0
library_manager_collection.h
Go to the documentation of this file.
1// Copyright (C) 2013-2020 Internet Systems Consortium, Inc. ("ISC")
2//
3// This Source Code Form is subject to the terms of the Mozilla Public
4// License, v. 2.0. If a copy of the MPL was not distributed with this
5// file, You can obtain one at http://mozilla.org/MPL/2.0/.
6
7#ifndef LIBRARY_MANAGER_COLLECTION_H
8#define LIBRARY_MANAGER_COLLECTION_H
9
11
12#include <boost/shared_ptr.hpp>
13#include <hooks/libinfo.h>
14
15#include <vector>
16
17namespace isc {
18namespace hooks {
19
25public:
26 LoadLibrariesNotCalled(const char* file, size_t line, const char* what) :
27 isc::Exception(file, line, what) {}
28};
29
30
31// Forward declarations
32class CalloutManager;
33class LibraryManager;
34
69
71public:
78
83 static_cast<void>(unloadLibraries());
84 }
85
95 bool loadLibraries();
96
107 boost::shared_ptr<CalloutManager> getCalloutManager() const;
108
114 std::vector<std::string> getLibraryNames() const {
115 return (library_names_);
116 }
117
123 return (library_info_);
124 }
125
132 int getLoadedLibraryCount() const;
133
144 static std::vector<std::string>
145 validateLibraries(const std::vector<std::string>& libraries);
146
159
160protected:
165 void unloadLibraries();
166
167private:
168
170 std::vector<std::string> library_names_;
171
173 std::vector<boost::shared_ptr<LibraryManager> > lib_managers_;
174
177 HookLibsCollection library_info_;
178
180 boost::shared_ptr<CalloutManager> callout_manager_;
181};
182
183} // namespace hooks
184} // namespace isc
185
186
187#endif // LIBRARY_MANAGER_COLLECTION_H
This is a base class for exceptions thrown from the DNS library module.
virtual const char * what() const
Returns a C-style character string of the cause of the exception.
std::vector< std::string > getLibraryNames() const
Get library names.
static std::vector< std::string > validateLibraries(const std::vector< std::string > &libraries)
Validate libraries.
HookLibsCollection getLibraryInfo() const
Returns library info.
LibraryManagerCollection(const HookLibsCollection &libraries)
Constructor.
boost::shared_ptr< CalloutManager > getCalloutManager() const
Get callout manager.
bool prepareUnloadLibraries()
Prepare libaries unloading.
int getLoadedLibraryCount() const
Get number of loaded libraries.
LoadLibrariesNotCalled(const char *file, size_t line, const char *what)
std::vector< HookLibInfo > HookLibsCollection
A storage for information about hook libraries.
Definition: libinfo.h:31
Defines the logger used by the top-level component of kea-lfc.