From 0a8788d36482b7b0343c8e4f4aee3a59f2d7fbb0 Mon Sep 17 00:00:00 2001 From: Jason Dillaman Date: Mon, 24 Apr 2017 21:55:12 -0400 Subject: [PATCH] rbd-mirror: pass pool watcher image ids by rvalue Signed-off-by: Jason Dillaman --- src/test/rbd_mirror/test_PoolWatcher.cc | 4 ++-- src/test/rbd_mirror/test_mock_PoolWatcher.cc | 13 +++++++++---- src/tools/rbd_mirror/PoolReplayer.cc | 4 ++-- src/tools/rbd_mirror/PoolReplayer.h | 12 ++++++------ src/tools/rbd_mirror/PoolWatcher.cc | 5 +++-- src/tools/rbd_mirror/PoolWatcher.h | 4 ++-- 6 files changed, 24 insertions(+), 18 deletions(-) diff --git a/src/test/rbd_mirror/test_PoolWatcher.cc b/src/test/rbd_mirror/test_PoolWatcher.cc index 9d11c715638ba..c127246693301 100644 --- a/src/test/rbd_mirror/test_PoolWatcher.cc +++ b/src/test/rbd_mirror/test_PoolWatcher.cc @@ -76,8 +76,8 @@ public: } void handle_update(const std::string &mirror_uuid, - const ImageIds &added_image_ids, - const ImageIds &removed_image_ids) override { + ImageIds &&added_image_ids, + ImageIds &&removed_image_ids) override { Mutex::Locker locker(test->m_lock); for (auto &image_id : removed_image_ids) { image_ids.erase(image_id); diff --git a/src/test/rbd_mirror/test_mock_PoolWatcher.cc b/src/test/rbd_mirror/test_mock_PoolWatcher.cc index b6e61516dce7c..1b7877434ad96 100644 --- a/src/test/rbd_mirror/test_mock_PoolWatcher.cc +++ b/src/test/rbd_mirror/test_mock_PoolWatcher.cc @@ -163,8 +163,13 @@ public: MockListener(TestMockPoolWatcher *test) : test(test) { } - MOCK_METHOD3(handle_update, void(const std::string &, const ImageIds &, - const ImageIds &)); + MOCK_METHOD3(mock_handle_update, void(const std::string &, const ImageIds &, + const ImageIds &)); + void handle_update(const std::string &mirror_uuid, + ImageIds &&added_image_ids, + ImageIds &&removed_image_ids) override { + mock_handle_update(mirror_uuid, added_image_ids, removed_image_ids); + } }; TestMockPoolWatcher() : m_lock("TestMockPoolWatcher::m_lock") { @@ -208,8 +213,8 @@ public: const std::string &mirror_uuid, const ImageIds &added_image_ids, const ImageIds &removed_image_ids) { - EXPECT_CALL(mock_listener, handle_update(mirror_uuid, added_image_ids, - removed_image_ids)) + EXPECT_CALL(mock_listener, mock_handle_update(mirror_uuid, added_image_ids, + removed_image_ids)) .WillOnce(WithoutArgs(Invoke([this]() { Mutex::Locker locker(m_lock); ++m_update_count; diff --git a/src/tools/rbd_mirror/PoolReplayer.cc b/src/tools/rbd_mirror/PoolReplayer.cc index 6747ddc15aacb..e95b19c97ff32 100644 --- a/src/tools/rbd_mirror/PoolReplayer.cc +++ b/src/tools/rbd_mirror/PoolReplayer.cc @@ -551,8 +551,8 @@ void PoolReplayer::release_leader() } void PoolReplayer::handle_update(const std::string &mirror_uuid, - const ImageIds &added_image_ids, - const ImageIds &removed_image_ids) { + ImageIds &&added_image_ids, + ImageIds &&removed_image_ids) { assert(!mirror_uuid.empty()); if (m_stopping.read()) { return; diff --git a/src/tools/rbd_mirror/PoolReplayer.h b/src/tools/rbd_mirror/PoolReplayer.h index 7de10a5c6a5e5..526ed536c0fa3 100644 --- a/src/tools/rbd_mirror/PoolReplayer.h +++ b/src/tools/rbd_mirror/PoolReplayer.h @@ -69,18 +69,18 @@ private: } void handle_update(const std::string &mirror_uuid, - const ImageIds &added_image_ids, - const ImageIds &removed_image_ids) override { - pool_replayer->handle_update(mirror_uuid, added_image_ids, - removed_image_ids); + ImageIds &&added_image_ids, + ImageIds &&removed_image_ids) override { + pool_replayer->handle_update(mirror_uuid, std::move(added_image_ids), + std::move(removed_image_ids)); } }; struct C_RefreshLocalImages; void handle_update(const std::string &mirror_uuid, - const ImageIds &added_image_ids, - const ImageIds &removed_image_ids); + ImageIds &&added_image_ids, + ImageIds &&removed_image_ids); int init_rados(const std::string &cluster_name, const std::string &client_name, diff --git a/src/tools/rbd_mirror/PoolWatcher.cc b/src/tools/rbd_mirror/PoolWatcher.cc index 6a855ff218530..18c6df3840fb9 100644 --- a/src/tools/rbd_mirror/PoolWatcher.cc +++ b/src/tools/rbd_mirror/PoolWatcher.cc @@ -479,7 +479,7 @@ void PoolWatcher::notify_listener() { } if (!removed_image_ids.empty()) { - m_listener.handle_update(mirror_uuid, {}, removed_image_ids); + m_listener.handle_update(mirror_uuid, {}, std::move(removed_image_ids)); removed_image_ids.clear(); } @@ -529,7 +529,8 @@ void PoolWatcher::notify_listener() { mirror_uuid = m_mirror_uuid; } - m_listener.handle_update(mirror_uuid, added_image_ids, removed_image_ids); + m_listener.handle_update(mirror_uuid, std::move(added_image_ids), + std::move(removed_image_ids)); { Mutex::Locker locker(m_lock); diff --git a/src/tools/rbd_mirror/PoolWatcher.h b/src/tools/rbd_mirror/PoolWatcher.h index aebd981b86453..aec063b3e7c3c 100644 --- a/src/tools/rbd_mirror/PoolWatcher.h +++ b/src/tools/rbd_mirror/PoolWatcher.h @@ -37,8 +37,8 @@ public: } virtual void handle_update(const std::string &mirror_uuid, - const ImageIds &added_image_ids, - const ImageIds &removed_image_ids) = 0; + ImageIds &&added_image_ids, + ImageIds &&removed_image_ids) = 0; }; PoolWatcher(Threads *threads, librados::IoCtx &remote_io_ctx, -- 2.39.5