From: Patrick Donnelly Date: Sun, 23 Dec 2018 18:17:22 +0000 (-0800) Subject: common: expose internal StackStringStream via deref X-Git-Tag: v14.1.0~482^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=e4bd6c114dd5621a5108928b84fee84c53c35345;p=ceph.git common: expose internal StackStringStream via deref This makes it much easier to use and works similar to a smart ptr. Signed-off-by: Patrick Donnelly --- diff --git a/src/common/StackStringStream.h b/src/common/StackStringStream.h index 5eaea7e8d6b5..c59f7d820c17 100644 --- a/src/common/StackStringStream.h +++ b/src/common/StackStringStream.h @@ -128,14 +128,17 @@ public: } } - sss& get_stream() { + sss& operator*() { return *osp; } - const sss& get_stream() const { + sss const& operator*() const { return *osp; } - std::string_view strv() const { - return osp->strv(); + sss* operator->() { + return osp.get(); + } + sss const* operator->() const { + return osp.get(); } private: diff --git a/src/log/Entry.h b/src/log/Entry.h index 2753b1942b59..a8479b53beec 100644 --- a/src/log/Entry.h +++ b/src/log/Entry.h @@ -62,14 +62,14 @@ public: ~MutableEntry() override = default; std::ostream& get_ostream() { - return cos.get_stream(); + return *cos; } std::string_view strv() const override { - return cos.get_stream().strv(); + return cos->strv(); } std::size_t size() const override { - return cos.get_stream().strv().size(); + return cos->strv().size(); } private: diff --git a/src/mds/MDSRank.cc b/src/mds/MDSRank.cc index a7bb5a50cfd6..5a8e540c9d25 100644 --- a/src/mds/MDSRank.cc +++ b/src/mds/MDSRank.cc @@ -2948,9 +2948,9 @@ bool MDSRank::command_dirfrag_ls( f->open_object_section("frag"); f->dump_int("value", leaf.value()); f->dump_int("bits", leaf.bits()); - CachedStackStringStream ss; - ss.get_stream() << std::hex << leaf.value() << "/" << std::dec << leaf.bits(); - f->dump_string("str", ss.strv()); + CachedStackStringStream css; + *css << std::hex << leaf.value() << "/" << std::dec << leaf.bits(); + f->dump_string("str", css->strv()); f->close_section(); } f->close_section(); @@ -3199,12 +3199,11 @@ bool MDSRank::evict_client(int64_t session_id, auto& addr = session->info.inst.addr; { - CachedStackStringStream _ss; - auto& ss = _ss.get_stream(); - ss << "Evicting " << (blacklist ? "(and blacklisting) " : "") - << "client session " << session_id << " (" << addr << ")"; - dout(1) << ss.strv() << dendl; - clog->info() << ss.strv(); + CachedStackStringStream css; + *css << "Evicting " << (blacklist ? "(and blacklisting) " : "") + << "client session " << session_id << " (" << addr << ")"; + dout(1) << css->strv() << dendl; + clog->info() << css->strv(); } dout(4) << "Preparing blacklist command... (wait=" << wait << ")" << dendl;