From a13b7c82158fd011c42e0dc62a499b61104f2292 Mon Sep 17 00:00:00 2001 From: Jason Dillaman Date: Thu, 8 Mar 2018 16:53:00 -0500 Subject: [PATCH] rbd-mirror: moved leader watcher listener interface out of templated class Signed-off-by: Jason Dillaman --- src/test/rbd_mirror/test_LeaderWatcher.cc | 2 +- src/test/rbd_mirror/test_mock_LeaderWatcher.cc | 2 +- src/tools/rbd_mirror/LeaderWatcher.cc | 2 +- src/tools/rbd_mirror/LeaderWatcher.h | 15 ++------------- src/tools/rbd_mirror/PoolReplayer.h | 3 ++- src/tools/rbd_mirror/leader_watcher/Types.h | 14 ++++++++++++++ 6 files changed, 21 insertions(+), 17 deletions(-) diff --git a/src/test/rbd_mirror/test_LeaderWatcher.cc b/src/test/rbd_mirror/test_LeaderWatcher.cc index c1699892a731e..c578e4792659e 100644 --- a/src/test/rbd_mirror/test_LeaderWatcher.cc +++ b/src/test/rbd_mirror/test_LeaderWatcher.cc @@ -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)) { diff --git a/src/test/rbd_mirror/test_mock_LeaderWatcher.cc b/src/test/rbd_mirror/test_mock_LeaderWatcher.cc index 3dc62fe81151a..7922ade5eb956 100644 --- a/src/test/rbd_mirror/test_mock_LeaderWatcher.cc +++ b/src/test/rbd_mirror/test_mock_LeaderWatcher.cc @@ -254,7 +254,7 @@ using ::testing::Return; using librbd::MockManagedLock; -struct MockListener : public LeaderWatcher::Listener { +struct MockListener : public leader_watcher::Listener { static MockListener* s_instance; MockListener() { diff --git a/src/tools/rbd_mirror/LeaderWatcher.cc b/src/tools/rbd_mirror/LeaderWatcher.cc index cbcce6cd206ae..7b2eb0c58f2e6 100644 --- a/src/tools/rbd_mirror/LeaderWatcher.cc +++ b/src/tools/rbd_mirror/LeaderWatcher.cc @@ -27,7 +27,7 @@ using librbd::util::create_rados_callback; template LeaderWatcher::LeaderWatcher(Threads *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()), diff --git a/src/tools/rbd_mirror/LeaderWatcher.h b/src/tools/rbd_mirror/LeaderWatcher.h index 86982fee67639..d7f5732796e45 100644 --- a/src/tools/rbd_mirror/LeaderWatcher.h +++ b/src/tools/rbd_mirror/LeaderWatcher.h @@ -28,19 +28,8 @@ template 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 *threads, librados::IoCtx &io_ctx, - Listener *listener); + leader_watcher::Listener *listener); ~LeaderWatcher() override; int init(); @@ -192,7 +181,7 @@ private: }; Threads *m_threads; - Listener *m_listener; + leader_watcher::Listener *m_listener; mutable Mutex m_lock; uint64_t m_notifier_id; diff --git a/src/tools/rbd_mirror/PoolReplayer.h b/src/tools/rbd_mirror/PoolReplayer.h index 3bcb1ed5fe88a..34a84c30c330c 100644 --- a/src/tools/rbd_mirror/PoolReplayer.h +++ b/src/tools/rbd_mirror/PoolReplayer.h @@ -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) { diff --git a/src/tools/rbd_mirror/leader_watcher/Types.h b/src/tools/rbd_mirror/leader_watcher/Types.h index b6b3849301a68..76980d588df4b 100644 --- a/src/tools/rbd_mirror/leader_watcher/Types.h +++ b/src/tools/rbd_mirror/leader_watcher/Types.h @@ -7,14 +7,28 @@ #include "include/int_types.h" #include "include/buffer_fwd.h" #include "include/encoding.h" +#include #include +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, -- 2.39.5