]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
rbd-mirror: moved leader watcher listener interface out of templated class
authorJason Dillaman <dillaman@redhat.com>
Thu, 8 Mar 2018 21:53:00 +0000 (16:53 -0500)
committerJason Dillaman <dillaman@redhat.com>
Tue, 10 Apr 2018 20:31:32 +0000 (16:31 -0400)
Signed-off-by: Jason Dillaman <dillaman@redhat.com>
src/test/rbd_mirror/test_LeaderWatcher.cc
src/test/rbd_mirror/test_mock_LeaderWatcher.cc
src/tools/rbd_mirror/LeaderWatcher.cc
src/tools/rbd_mirror/LeaderWatcher.h
src/tools/rbd_mirror/PoolReplayer.h
src/tools/rbd_mirror/leader_watcher/Types.h

index c1699892a731e1e36777b2c05fca6f3279e3ca64..c578e4792659e56b6ec6f4e8ef8e2acf45886bc6 100644 (file)
@@ -21,7 +21,7 @@ void register_test_leader_watcher() {
 
 class TestLeaderWatcher : public ::rbd::mirror::TestFixture {
 public:
-  class Listener : public rbd::mirror::LeaderWatcher<>::Listener {
+  class Listener : public rbd::mirror::leader_watcher::Listener {
   public:
     Listener()
       : m_test_lock(unique_lock_name("LeaderWatcher::m_test_lock", this)) {
index 3dc62fe81151a8211cfbbd159cf14f6a3661e9f3..7922ade5eb95662f8194407699911cfd94cdf9a4 100644 (file)
@@ -254,7 +254,7 @@ using ::testing::Return;
 
 using librbd::MockManagedLock;
 
-struct MockListener : public LeaderWatcher<librbd::MockTestImageCtx>::Listener {
+struct MockListener : public leader_watcher::Listener {
   static MockListener* s_instance;
 
   MockListener() {
index cbcce6cd206ae4f353b579041d34ba2701a0de96..7b2eb0c58f2e602c3289a1315b3990fb831f34cf 100644 (file)
@@ -27,7 +27,7 @@ using librbd::util::create_rados_callback;
 
 template <typename I>
 LeaderWatcher<I>::LeaderWatcher(Threads<I> *threads, librados::IoCtx &io_ctx,
-                                Listener *listener)
+                                leader_watcher::Listener *listener)
   : Watcher(io_ctx, threads->work_queue, RBD_MIRROR_LEADER),
     m_threads(threads), m_listener(listener),
     m_lock("rbd::mirror::LeaderWatcher " + io_ctx.get_pool_name()),
index 86982fee676390edb621cd5e85eeb4119f2b8b75..d7f5732796e45ade7fc2faed49f8a3228ba5720a 100644 (file)
@@ -28,19 +28,8 @@ template <typename ImageCtxT = librbd::ImageCtx>
 class LeaderWatcher : protected librbd::Watcher {
   using librbd::Watcher::unregister_watch; // Silence overloaded virtual warning
 public:
-  struct Listener {
-    virtual ~Listener() {
-    }
-
-    virtual void post_acquire_handler(Context *on_finish) = 0;
-    virtual void pre_release_handler(Context *on_finish) = 0;
-
-    virtual void update_leader_handler(
-      const std::string &leader_instance_id) = 0;
-  };
-
   LeaderWatcher(Threads<ImageCtxT> *threads, librados::IoCtx &io_ctx,
-                Listener *listener);
+                leader_watcher::Listener *listener);
   ~LeaderWatcher() override;
 
   int init();
@@ -192,7 +181,7 @@ private:
   };
 
   Threads<ImageCtxT> *m_threads;
-  Listener *m_listener;
+  leader_watcher::Listener *m_listener;
 
   mutable Mutex m_lock;
   uint64_t m_notifier_id;
index 3bcb1ed5fe88aacb9221eb5e97b7703ab9f6edb2..34a84c30c330c4813df049d9dc5e199eecb3d213 100644 (file)
@@ -15,6 +15,7 @@
 #include "PoolWatcher.h"
 #include "ImageDeleter.h"
 #include "types.h"
+#include "tools/rbd_mirror/leader_watcher/Types.h"
 #include "tools/rbd_mirror/pool_watcher/Types.h"
 #include "tools/rbd_mirror/service_daemon/Types.h"
 
@@ -191,7 +192,7 @@ private:
     }
   } m_pool_replayer_thread;
 
-  class LeaderListener : public LeaderWatcher<>::Listener {
+  class LeaderListener : public leader_watcher::Listener {
   public:
     LeaderListener(PoolReplayer *pool_replayer)
       : m_pool_replayer(pool_replayer) {
index b6b3849301a686f27187f7d21fee166bae7fc1cd..76980d588df4bdebf8bf5798e1f98044a74650f1 100644 (file)
@@ -7,14 +7,28 @@
 #include "include/int_types.h"
 #include "include/buffer_fwd.h"
 #include "include/encoding.h"
+#include <string>
 #include <boost/variant.hpp>
 
+struct Context;
+
 namespace ceph { class Formatter; }
 
 namespace rbd {
 namespace mirror {
 namespace leader_watcher {
 
+struct Listener {
+  virtual ~Listener() {
+  }
+
+  virtual void post_acquire_handler(Context *on_finish) = 0;
+  virtual void pre_release_handler(Context *on_finish) = 0;
+
+  virtual void update_leader_handler(
+    const std::string &leader_instance_id) = 0;
+};
+
 enum NotifyOp {
   NOTIFY_OP_HEARTBEAT        = 0,
   NOTIFY_OP_LOCK_ACQUIRED    = 1,