]> git.ipfire.org Git - thirdparty/kea.git/commitdiff
[962-implement-the-multi_threading_mgr-h-idea] Merged into one class
authorFrancis Dupont <fdupont@isc.org>
Wed, 23 Oct 2019 12:38:52 +0000 (14:38 +0200)
committerFrancis Dupont <fdupont@isc.org>
Wed, 23 Oct 2019 15:15:40 +0000 (17:15 +0200)
src/lib/util/multi_threading_mgr.cc
src/lib/util/multi_threading_mgr.h
src/lib/util/tests/multi_threading_mgr_unittest.cc

index 2185946cbfba32d42ceb56856d62fa4aaf7f76a2..787e7999b09695ebea75750ee23b2a6702db5aa6 100644 (file)
@@ -9,34 +9,28 @@
 namespace isc {
 namespace util {
 
-BaseMultiThreadingMgr::BaseMultiThreadingMgr() : enabled_(false) {
+MultiThreadingMgr::MultiThreadingMgr() : enabled_(false) {
 }
 
-BaseMultiThreadingMgr::~BaseMultiThreadingMgr() {
+MultiThreadingMgr::~MultiThreadingMgr() {
+}
+
+MultiThreadingMgr&
+MultiThreadingMgr::instance() {
+    static MultiThreadingMgr manager;
+    return (manager);
 }
 
 bool
-BaseMultiThreadingMgr::getMode() const
+MultiThreadingMgr::getMode() const
 {
     return (enabled_);
 }
 
 void
-BaseMultiThreadingMgr::setMode(bool enabled) {
+MultiThreadingMgr::setMode(bool enabled) {
     enabled_ = enabled;
 }
 
-MultiThreadingMgr::MultiThreadingMgr() : BaseMultiThreadingMgr() {
-}
-
-MultiThreadingMgr::~MultiThreadingMgr() {
-}
-
-BaseMultiThreadingMgr&
-MultiThreadingMgr::instance() {
-    static MultiThreadingMgr manager;
-    return (manager);
-}
-
 } // namespace isc::util
 } // namespace isc
index 4cf8ea360b1ce70e72ff3431937c1ba81aa9e3b5..0bd0ead96186c1b3510ab74b7e1c74d32f9c909c 100644 (file)
 namespace isc {
 namespace util {
 
-/// @file multi_threading_mgr.h Multi Threading Manager.
+/// @brief Multi Threading Manager.
 ///
 /// This singleton class holds the multi-threading mode.
 ///
-/// It is split into two classes to hide the setMode method from the
-/// instance static method.
-///
 /// The standard way to use it is:
 /// @code
 /// if (MultiThreadingMgr::instance().getMode()) {
@@ -43,58 +40,42 @@ namespace util {
 ///     }
 /// }
 /// @endcode
-
-/// @brief The base class hiding the setter.
-class BaseMultiThreadingMgr : public boost::noncopyable {
+class MultiThreadingMgr : public boost::noncopyable {
 public:
 
+    /// @brief Returns a single instance of Multi Threading Manager.
+    ///
+    /// MultiThreadingMgr is a singleton and this method is the only way
+    /// of accessing it.
+    ///
+    /// @return the single instance.
+    static MultiThreadingMgr& instance();
+
     /// @brief Get the mode.
     ///
     /// @return the current mode: true if multi-threading is enabled,
     /// false otherwise.
     bool getMode() const;
 
-protected:
-
-    /// @brief Constructor.
-    BaseMultiThreadingMgr();
-
-    /// @brief Destructor.
-    virtual ~BaseMultiThreadingMgr();
-
     /// @brief Set the mode.
     ///
     /// @param mode The new mode.
     void setMode(bool enabled);
 
-private:
-    /// @brief the current mode.
-    bool enabled_;
-};
-
-/// @brief The class providing instance and setter.
-class MultiThreadingMgr : public BaseMultiThreadingMgr {
-public:
-
-    /// @brief Returns a single instance of Multi Threading Manager.
-    ///
-    /// MultiThreadingMgr is a singleton and this method is the only way
-    /// of accessing it.
-    ///
-    /// @return the single instance.
-    static BaseMultiThreadingMgr& instance();
-
-    using BaseMultiThreadingMgr::setMode;
-
 protected:
+
     /// @brief Constructor.
     MultiThreadingMgr();
 
     /// @brief Destructor.
     virtual ~MultiThreadingMgr();
+
+private:
+    /// @brief the current mode.
+    bool enabled_;
 };
 
-} // namespace isc::dhcp
+} // namespace isc::util
 } // namespace isc
 
 #endif // MULTI_THREADING_MGR_H
index 0bc42ce05f63a7d4d955a23f81854ba4f0891be9..82cbd16d603955365b45b2d4c459aaa232da00a2 100644 (file)
@@ -19,8 +19,8 @@ TEST(MultiThreadingMgrTest, default) {
 
 // Verifies that the instance can be dynamic cast and setter works.
 TEST(MultiThreadingMgrTest, setMode) {
-    EXPECT_NO_THROW(dynamic_cast<MultiThreadingMgr&>(MultiThreadingMgr::instance()).setMode(true));
+    EXPECT_NO_THROW(MultiThreadingMgr::instance().setMode(true));
     EXPECT_TRUE(MultiThreadingMgr::instance().getMode());
-    EXPECT_NO_THROW(dynamic_cast<MultiThreadingMgr&>(MultiThreadingMgr::instance()).setMode(false));
+    EXPECT_NO_THROW(MultiThreadingMgr::instance().setMode(false));
     EXPECT_FALSE(MultiThreadingMgr::instance().getMode());
 }