]> git.ipfire.org Git - thirdparty/kea.git/commitdiff
[#1127] addressed review
authorRazvan Becheriu <razvan@isc.org>
Thu, 14 May 2020 06:37:51 +0000 (09:37 +0300)
committerRazvan Becheriu <razvan@isc.org>
Fri, 15 May 2020 18:21:41 +0000 (21:21 +0300)
src/lib/hooks/hooks_manager.cc
src/lib/hooks/hooks_manager.h
src/lib/hooks/library_manager_collection.cc
src/lib/hooks/library_manager_collection.h

index 5e7d36bff68af0c0a8d4c6a435230261a4dd34f4..31238810e67966a28a86b59729c9c93f048ee1d6 100644 (file)
@@ -24,9 +24,12 @@ using namespace std;
 namespace isc {
 namespace hooks {
 
+boost::shared_ptr<CalloutManager> HooksManager::shared_callout_manager_;
+bool HooksManager::loaded_;
+
 // Constructor
 
-HooksManager::HooksManager() : loaded_(false) {
+HooksManager::HooksManager() {
     init();
 }
 
@@ -94,7 +97,7 @@ HooksManager::loadLibrariesInternal(const HookLibsCollection& libraries) {
     unloadLibrariesInternal(false);
 
     // Create the library manager and load the libraries.
-    lm_collection_.reset(new LibraryManagerCollection(libraries, shared_callout_manager_));
+    lm_collection_.reset(new LibraryManagerCollection(libraries));
     bool status = lm_collection_->loadLibraries();
 
     if (status) {
@@ -178,7 +181,7 @@ HooksManager::init() {
     // Nothing present, so create the collection with any empty set of
     // libraries, and get the CalloutManager.
     HookLibsCollection libraries;
-    lm_collection_.reset(new LibraryManagerCollection(libraries, shared_callout_manager_));
+    lm_collection_.reset(new LibraryManagerCollection(libraries));
     lm_collection_->loadLibraries();
     callout_manager_ = lm_collection_->getCalloutManager();
 }
@@ -228,7 +231,7 @@ void
 HooksManager::setSharedCalloutManager(boost::shared_ptr<CalloutManager> manager) {
     shared_callout_manager_ = manager;
     if (!loaded_) {
-        init();
+        unloadLibraries();
     }
 }
 
index ecb050ca3c1114b0849b3f8180b511a09cb500cb..6001278f48017c7226b929a1eb6ad90c46584344 100644 (file)
@@ -229,7 +229,7 @@ public:
     /// @brief Get the shared callout manager
     ///
     /// @return A reference to the shared callout manager
-    boost::shared_ptr<CalloutManager> getSharedCalloutManager();
+    static boost::shared_ptr<CalloutManager> getSharedCalloutManager();
 
     /// @brief Set the shared callout manager
     ///
@@ -238,8 +238,8 @@ public:
     /// not yet been called.
     ///
     /// @param manager The shared callout manager
-    void setSharedCalloutManager(boost::shared_ptr<CalloutManager> manager =
-                                 boost::shared_ptr<CalloutManager>());
+    static void setSharedCalloutManager(boost::shared_ptr<CalloutManager> manager =
+                                        boost::shared_ptr<CalloutManager>());
 
     /// @brief Park an object (packet).
     ///
@@ -501,10 +501,10 @@ private:
     boost::shared_ptr<CalloutManager> callout_manager_;
 
     /// Shared callout manager to survive library reloads.
-    boost::shared_ptr<CalloutManager> shared_callout_manager_;
+    static boost::shared_ptr<CalloutManager> shared_callout_manager_;
 
     /// Loaded flag to indicate if @ref loadLibraries has been called
-    bool loaded_;
+    static bool loaded_;
 };
 
 } // namespace util
index 17ee10ad03a8a2f4130a31bc75d61f21e8147226..a6d65c032c04391411905925060773a0b6f0adf7 100644 (file)
@@ -7,6 +7,7 @@
 #include <config.h>
 
 #include <hooks/callout_manager.h>
+#include <hooks/hooks_manager.h>
 #include <hooks/library_manager.h>
 #include <hooks/library_manager_collection.h>
 
@@ -36,9 +37,8 @@ LibraryManagerCollection::getCalloutManager() const {
     return (callout_manager_);
 }
 
-LibraryManagerCollection::LibraryManagerCollection(const HookLibsCollection& libraries,
-        const boost::shared_ptr<CalloutManager>& manager)
-    : shared_callout_manager_(manager), library_info_(libraries) {
+LibraryManagerCollection::LibraryManagerCollection(const HookLibsCollection& libraries)
+    : library_info_(libraries) {
 
     // We need to split hook libs into library names and library parameters.
     for (HookLibsCollection::const_iterator it = libraries.begin();
@@ -78,7 +78,7 @@ LibraryManagerCollection::loadLibraries() {
     // to re-use the existing callout manager (so retaining registered pre-
     // and post-library callouts).
     if (library_names_.empty()) {
-        callout_manager_ = shared_callout_manager_;
+        callout_manager_ = HooksManager::getSharedCalloutManager();
     }
     if (!library_names_.empty() || !callout_manager_) {
         callout_manager_.reset(new CalloutManager(library_names_.size()));
index f1b481b81359ab28c578cdf2575e07762c4fc6ae..df52649ecbeae8310392858adad0ee74819b9872 100644 (file)
@@ -8,7 +8,6 @@
 #define LIBRARY_MANAGER_COLLECTION_H
 
 #include <exceptions/exceptions.h>
-#include <hooks/hooks_manager.h>
 
 #include <boost/shared_ptr.hpp>
 #include <hooks/libinfo.h>
@@ -75,9 +74,7 @@ public:
     /// @param libraries List of libraries that this collection will manage.
     ///        The order of the libraries is important. It holds the library
     ///        names and its configuration parameters.
-    LibraryManagerCollection(const HookLibsCollection& libraries,
-                             const boost::shared_ptr<CalloutManager>& manager =
-                             HooksManager::getHooksManager().getSharedCalloutManager());
+    LibraryManagerCollection(const HookLibsCollection& libraries);
 
     /// @brief Destructor
     ///
@@ -155,8 +152,6 @@ protected:
     void unloadLibraries();
 
 private:
-    /// Shared Callout manager to be associated with the libraries
-    boost::shared_ptr<CalloutManager>               shared_callout_manager_;
 
     /// Vector of library names
     std::vector<std::string>                        library_names_;