123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173 |
- #include <hooks/callout_handle.h>
- #include <hooks/callout_manager.h>
- #include <hooks/callout_manager.h>
- #include <hooks/library_handle.h>
- #include <hooks/library_manager_collection.h>
- #include <hooks/hooks_manager.h>
- #include <hooks/server_hooks.h>
- #include <boost/shared_ptr.hpp>
- #include <string>
- #include <vector>
- using namespace std;
- namespace isc {
- namespace hooks {
- HooksManager::HooksManager() {
- }
- HooksManager&
- HooksManager::getHooksManager() {
- static HooksManager manager;
- return (manager);
- }
- bool
- HooksManager::calloutsPresentInternal(int index) {
- conditionallyInitialize();
- return (callout_manager_->calloutsPresent(index));
- }
- bool
- HooksManager::calloutsPresent(int index) {
- return (getHooksManager().calloutsPresentInternal(index));
- }
- void
- HooksManager::callCalloutsInternal(int index, CalloutHandle& handle) {
- conditionallyInitialize();
- return (callout_manager_->callCallouts(index, handle));
- }
- void
- HooksManager::callCallouts(int index, CalloutHandle& handle) {
- return (getHooksManager().callCalloutsInternal(index, handle));
- }
- bool
- HooksManager::loadLibrariesInternal(const std::vector<std::string>& libraries) {
-
- unloadLibrariesInternal();
-
- lm_collection_.reset(new LibraryManagerCollection(libraries));
- bool status = lm_collection_->loadLibraries();
-
- callout_manager_ = lm_collection_->getCalloutManager();
- return (status);
- }
- bool
- HooksManager::loadLibraries(const std::vector<std::string>& libraries) {
- return (getHooksManager().loadLibrariesInternal(libraries));
- }
- void
- HooksManager::unloadLibrariesInternal() {
-
-
-
-
-
- lm_collection_.reset();
- callout_manager_.reset();
- }
- void HooksManager::unloadLibraries() {
- getHooksManager().unloadLibrariesInternal();
- }
- boost::shared_ptr<CalloutHandle>
- HooksManager::createCalloutHandleInternal() {
- conditionallyInitialize();
- return (boost::shared_ptr<CalloutHandle>(
- new CalloutHandle(callout_manager_, lm_collection_)));
- }
- boost::shared_ptr<CalloutHandle>
- HooksManager::createCalloutHandle() {
- return (getHooksManager().createCalloutHandleInternal());
- }
- void
- HooksManager::performConditionalInitialization() {
-
-
- vector<string> libraries;
- lm_collection_.reset(new LibraryManagerCollection(libraries));
- lm_collection_->loadLibraries();
- callout_manager_ = lm_collection_->getCalloutManager();
- }
- int
- HooksManager::registerHook(const std::string& name) {
- return (ServerHooks::getServerHooks().registerHook(name));
- }
- isc::hooks::LibraryHandle&
- HooksManager::preCalloutsLibraryHandleInternal() {
- conditionallyInitialize();
- return (callout_manager_->getPreLibraryHandle());
- }
- isc::hooks::LibraryHandle&
- HooksManager::preCalloutsLibraryHandle() {
- return (getHooksManager().preCalloutsLibraryHandleInternal());
- }
- isc::hooks::LibraryHandle&
- HooksManager::postCalloutsLibraryHandleInternal() {
- conditionallyInitialize();
- return (callout_manager_->getPostLibraryHandle());
- }
- isc::hooks::LibraryHandle&
- HooksManager::postCalloutsLibraryHandle() {
- return (getHooksManager().postCalloutsLibraryHandleInternal());
- }
- }
- }
|