16 #include <boost/shared_ptr.hpp> 17 #include <boost/weak_ptr.hpp> 29 HooksManager::HooksManager() : test_mode_(false) {
33 lm_collection_.reset(
new LibraryManagerCollection(libraries));
34 lm_collection_->loadLibraries();
35 callout_manager_ = lm_collection_->getCalloutManager();
41 HooksManager::getHooksManager() {
42 static HooksManager manager;
49 HooksManager::calloutsPresentInternal(
int index) {
50 return (callout_manager_->calloutsPresent(index));
55 return (getHooksManager().calloutsPresentInternal(index));
59 HooksManager::commandHandlersPresentInternal(
const std::string& command_name) {
60 return (callout_manager_->commandHandlersPresent(command_name));
65 return (getHooksManager().commandHandlersPresentInternal(command_name));
71 HooksManager::callCalloutsInternal(
int index,
CalloutHandle& handle) {
72 callout_manager_->callCallouts(index, handle);
77 getHooksManager().callCalloutsInternal(index, handle);
81 HooksManager::callCommandHandlersInternal(
const std::string& command_name,
83 callout_manager_->callCommandHandlers(command_name, handle);
89 getHooksManager().callCommandHandlersInternal(command_name, handle);
105 boost::weak_ptr<LibraryManagerCollection> weak_lmc(lm_collection_);
112 if (!weak_lmc.expired()) {
117 bool status = lm_collection_->loadLibraries();
121 callout_manager_ = lm_collection_->getCalloutManager();
125 static_cast<void>(unloadLibrariesInternal());
133 return (getHooksManager().loadLibrariesInternal(libraries));
141 HooksManager::unloadLibrariesInternal() {
149 boost::weak_ptr<LibraryManagerCollection> weak_lmc(lm_collection_);
157 boost::shared_ptr<LibraryManagerCollection> still_here = weak_lmc.lock();
160 lm_collection_ = still_here;
165 lm_collection_->loadLibraries();
168 callout_manager_ = lm_collection_->getCalloutManager();
175 return (getHooksManager().unloadLibrariesInternal());
179 HooksManager::prepareUnloadLibrariesInternal() {
184 static_cast<void>(lm_collection_->prepareUnloadLibraries());
189 getHooksManager().prepareUnloadLibrariesInternal();
194 boost::shared_ptr<CalloutHandle>
195 HooksManager::createCalloutHandleInternal() {
196 return (boost::make_shared<CalloutHandle>(callout_manager_, lm_collection_));
199 boost::shared_ptr<CalloutHandle>
201 return (getHooksManager().createCalloutHandleInternal());
206 std::vector<std::string>
207 HooksManager::getLibraryNamesInternal()
const {
208 return (lm_collection_->getLibraryNames());
212 HooksManager::getLibraryInfoInternal()
const {
213 return (lm_collection_->getLibraryInfo());
216 std::vector<std::string>
218 return (getHooksManager().getLibraryNamesInternal());
223 return (getHooksManager().getLibraryInfoInternal());
236 HooksManager::preCalloutsLibraryHandleInternal() {
237 return (callout_manager_->getPreLibraryHandle());
242 return (getHooksManager().preCalloutsLibraryHandleInternal());
246 HooksManager::postCalloutsLibraryHandleInternal() {
247 return (callout_manager_->getPostLibraryHandle());
252 return (getHooksManager().postCalloutsLibraryHandleInternal());
257 std::vector<std::string>
266 getHooksManager().test_mode_ = mode;
271 return (getHooksManager().test_mode_);
Library manager collection.
static LibraryHandle & preCalloutsLibraryHandle()
Return pre-callouts library handle.
static ServerHooks & getServerHooks()
Return ServerHooks object.
static std::vector< std::string > validateLibraries(const std::vector< std::string > &libraries)
Validate libraries.
static void prepareUnloadLibraries()
Prepare the unloading of libraries.
static void callCallouts(int index, CalloutHandle &handle)
Calls the callouts for a given hook.
static int registerHook(const std::string &name)
Register Hook.
static HookLibsCollection getLibraryInfo()
Return list of loaded libraries with its parameters.
static bool calloutsPresent(int index)
Are callouts present?
static void setTestMode(bool mode)
Set test mode.
std::vector< HookLibInfo > HookLibsCollection
A storage for information about hook libraries.
static bool unloadLibraries()
Unload libraries.
#define isc_throw(type, stream)
A shortcut macro to insert known values into exception arguments.
Per-packet callout handle.
static bool getTestMode()
Get test mode.
static bool loadLibraries(const HookLibsCollection &libraries)
Load and reload libraries.
static void callCommandHandlers(const std::string &command_name, CalloutHandle &handle)
Calls the callouts/command handlers for a given command name.
Defines the logger used by the top-level component of kea-lfc.
static std::vector< std::string > validateLibraries(const std::vector< std::string > &libraries)
Validate library list.
static boost::shared_ptr< CalloutHandle > createCalloutHandle()
Return callout handle.
static std::vector< std::string > getLibraryNames()
Return list of loaded libraries.
static LibraryHandle & postCalloutsLibraryHandle()
Return post-callouts library handle.
static bool commandHandlersPresent(const std::string &command_name)
Checks if control command handlers are present for the specified command.
ParkingLotsPtr getParkingLotsPtr() const
Returns pointer to all parking lots.