]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
common: expose internal StackStringStream via deref 25750/head
authorPatrick Donnelly <pdonnell@redhat.com>
Sun, 23 Dec 2018 18:17:22 +0000 (10:17 -0800)
committerPatrick Donnelly <pdonnell@redhat.com>
Thu, 3 Jan 2019 14:48:16 +0000 (06:48 -0800)
This makes it much easier to use and works similar to a smart ptr.

Signed-off-by: Patrick Donnelly <pdonnell@redhat.com>
src/common/StackStringStream.h
src/log/Entry.h
src/mds/MDSRank.cc

index 5eaea7e8d6b5a46c1e25cb56f9769765cb395463..c59f7d820c177ca858e8e3aa06aafcf85ca9145a 100644 (file)
@@ -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:
index 2753b1942b59d61bd95ad8cbd52886a77f8a8750..a8479b53beecb72ed4fd416b944304837d5359bb 100644 (file)
@@ -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:
index a7bb5a50cfd6b7221e13f588dbfa1840b5129bf6..5a8e540c9d250db77abba120f5d34c98d94e6863 100644 (file)
@@ -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;