From: Casey Bodley Date: Tue, 23 Oct 2018 21:26:11 +0000 (-0400) Subject: librados: add move operations to IoCtx X-Git-Tag: v14.1.0~965^2~5 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=cfd66c5f89438ff60ea6a7b248d3937a277a8f07;p=ceph-ci.git librados: add move operations to IoCtx Signed-off-by: Casey Bodley --- diff --git a/src/include/rados/librados.hpp b/src/include/rados/librados.hpp index 0f47dd6b7fd..9951d9ebbcb 100644 --- a/src/include/rados/librados.hpp +++ b/src/include/rados/librados.hpp @@ -710,6 +710,8 @@ namespace librados static void from_rados_ioctx_t(rados_ioctx_t p, IoCtx &pool); IoCtx(const IoCtx& rhs); IoCtx& operator=(const IoCtx& rhs); + IoCtx(IoCtx&& rhs) noexcept; + IoCtx& operator=(IoCtx&& rhs) noexcept; ~IoCtx(); diff --git a/src/librados/librados_cxx.cc b/src/librados/librados_cxx.cc index c1d2f3fd10c..9768eaa9d4e 100644 --- a/src/librados/librados_cxx.cc +++ b/src/librados/librados_cxx.cc @@ -1051,6 +1051,19 @@ librados::IoCtx& librados::IoCtx::operator=(const IoCtx& rhs) return *this; } +librados::IoCtx::IoCtx(IoCtx&& rhs) noexcept + : io_ctx_impl(std::exchange(rhs.io_ctx_impl, nullptr)) +{ +} + +librados::IoCtx& librados::IoCtx::operator=(IoCtx&& rhs) noexcept +{ + if (io_ctx_impl) + io_ctx_impl->put(); + io_ctx_impl = std::exchange(rhs.io_ctx_impl, nullptr); + return *this; +} + librados::IoCtx::~IoCtx() { close();