From: Casey Bodley Date: Thu, 30 Jul 2015 20:20:32 +0000 (-0400) Subject: c++11: stream output operators for stream types X-Git-Tag: v9.1.0~419^2~7 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=3f52583484424267b63b560bd4c97743960ea994;p=ceph.git c++11: stream output operators for stream types stream output operators for the stream types are not part of the standard, so this statement no longer works: std::stringstream stream; std::cout << stream; instead, use the streambuf's stream operator: std::cout << stream.rdbuf(); Signed-off-by: Casey Bodley --- diff --git a/src/client/SyntheticClient.cc b/src/client/SyntheticClient.cc index 248d49ba5e90..fa92f620f598 100644 --- a/src/client/SyntheticClient.cc +++ b/src/client/SyntheticClient.cc @@ -601,7 +601,7 @@ int SyntheticClient::run() int size = iargs.front(); iargs.pop_front(); int inflight = iargs.front(); iargs.pop_front(); if (run_me()) { - dout(2) << "createobjects " << cout << " of " << size << " bytes" + dout(2) << "createobjects " << count << " of " << size << " bytes" << ", " << inflight << " in flight" << dendl; create_objects(count, size, inflight); } @@ -617,7 +617,7 @@ int SyntheticClient::run() int rskew = iargs.front(); iargs.pop_front(); int wskew = iargs.front(); iargs.pop_front(); if (run_me()) { - dout(2) << "objectrw " << cout << " " << size << " " << wrpc + dout(2) << "objectrw " << count << " " << size << " " << wrpc << " " << overlap << " " << rskew << " " << wskew << dendl; object_rw(count, size, wrpc, overlap, rskew, wskew); } diff --git a/src/common/admin_socket.cc b/src/common/admin_socket.cc index 95a48b3ec129..1df510545137 100644 --- a/src/common/admin_socket.cc +++ b/src/common/admin_socket.cc @@ -352,7 +352,7 @@ bool AdminSocket::do_accept() stringstream errss; cmdvec.push_back(cmd); if (!cmdmap_from_json(cmdvec, &cmdmap, errss)) { - ldout(m_cct, 0) << "AdminSocket: " << errss << dendl; + ldout(m_cct, 0) << "AdminSocket: " << errss.rdbuf() << dendl; return false; } cmd_getval(m_cct, cmdmap, "format", format); diff --git a/src/common/cmdparse.cc b/src/common/cmdparse.cc index 3ca3bbd0cb46..6c1aae83db5a 100644 --- a/src/common/cmdparse.cc +++ b/src/common/cmdparse.cc @@ -224,7 +224,7 @@ handle_bad_get(CephContext *cct, string k, const char *tname) BackTrace bt(1); ostringstream oss; bt.print(oss); - lderr(cct) << oss << dendl; + lderr(cct) << oss.rdbuf() << dendl; if (status == 0) free((char *)typestr); } diff --git a/src/mon/OSDMonitor.cc b/src/mon/OSDMonitor.cc index 1bff447ddb29..1871818be6f0 100644 --- a/src/mon/OSDMonitor.cc +++ b/src/mon/OSDMonitor.cc @@ -4629,7 +4629,7 @@ int OSDMonitor::prepare_command_pool_set(map &cmdmap, if (err == 0) { k = erasure_code->get_data_chunk_count(); } else { - ss << __func__ << " get_erasure_code failed: " << tmp; + ss << __func__ << " get_erasure_code failed: " << tmp.rdbuf(); return err;; } diff --git a/src/msg/simple/Pipe.cc b/src/msg/simple/Pipe.cc index 245eae0165da..a9b3b54e870e 100644 --- a/src/msg/simple/Pipe.cc +++ b/src/msg/simple/Pipe.cc @@ -37,16 +37,20 @@ #define dout_subsys ceph_subsys_ms #undef dout_prefix -#define dout_prefix _pipe_prefix(_dout) -ostream& Pipe::_pipe_prefix(std::ostream *_dout) { - return *_dout << "-- " << msgr->get_myinst().addr << " >> " << peer_addr << " pipe(" << this - << " sd=" << sd << " :" << port - << " s=" << state - << " pgs=" << peer_global_seq - << " cs=" << connect_seq - << " l=" << policy.lossy - << " c=" << connection_state - << ")."; +#define dout_prefix *_dout << *this +ostream& Pipe::_pipe_prefix(std::ostream &out) const { + return out << "-- " << msgr->get_myinst().addr << " >> " << peer_addr << " pipe(" << this + << " sd=" << sd << " :" << port + << " s=" << state + << " pgs=" << peer_global_seq + << " cs=" << connect_seq + << " l=" << policy.lossy + << " c=" << connection_state + << ")."; +} + +ostream& operator<<(ostream &out, const Pipe &pipe) { + return pipe._pipe_prefix(out); } /* @@ -181,7 +185,7 @@ void Pipe::join_reader() void Pipe::DelayedDelivery::discard() { - lgeneric_subdout(pipe->msgr->cct, ms, 20) << pipe->_pipe_prefix(_dout) << "DelayedDelivery::discard" << dendl; + lgeneric_subdout(pipe->msgr->cct, ms, 20) << *pipe << "DelayedDelivery::discard" << dendl; Mutex::Locker l(delay_lock); while (!delay_queue.empty()) { Message *m = delay_queue.front().second; @@ -193,7 +197,7 @@ void Pipe::DelayedDelivery::discard() void Pipe::DelayedDelivery::flush() { - lgeneric_subdout(pipe->msgr->cct, ms, 20) << pipe->_pipe_prefix(_dout) << "DelayedDelivery::flush" << dendl; + lgeneric_subdout(pipe->msgr->cct, ms, 20) << *pipe << "DelayedDelivery::flush" << dendl; Mutex::Locker l(delay_lock); flush_count = delay_queue.size(); delay_cond.Signal(); @@ -202,11 +206,11 @@ void Pipe::DelayedDelivery::flush() void *Pipe::DelayedDelivery::entry() { Mutex::Locker locker(delay_lock); - lgeneric_subdout(pipe->msgr->cct, ms, 20) << pipe->_pipe_prefix(_dout) << "DelayedDelivery::entry start" << dendl; + lgeneric_subdout(pipe->msgr->cct, ms, 20) << *pipe << "DelayedDelivery::entry start" << dendl; while (!stop_delayed_delivery) { if (delay_queue.empty()) { - lgeneric_subdout(pipe->msgr->cct, ms, 30) << pipe->_pipe_prefix(_dout) << "DelayedDelivery::entry sleeping on delay_cond because delay queue is empty" << dendl; + lgeneric_subdout(pipe->msgr->cct, ms, 30) << *pipe << "DelayedDelivery::entry sleeping on delay_cond because delay queue is empty" << dendl; delay_cond.Wait(delay_lock); continue; } @@ -216,11 +220,11 @@ void *Pipe::DelayedDelivery::entry() if (!flush_count && (release > ceph_clock_now(pipe->msgr->cct) && (delay_msg_type.empty() || m->get_type_name() == delay_msg_type))) { - lgeneric_subdout(pipe->msgr->cct, ms, 10) << pipe->_pipe_prefix(_dout) << "DelayedDelivery::entry sleeping on delay_cond until " << release << dendl; + lgeneric_subdout(pipe->msgr->cct, ms, 10) << *pipe << "DelayedDelivery::entry sleeping on delay_cond until " << release << dendl; delay_cond.WaitUntil(delay_lock, release); continue; } - lgeneric_subdout(pipe->msgr->cct, ms, 10) << pipe->_pipe_prefix(_dout) << "DelayedDelivery::entry dequeuing message " << m << " for delivery, past " << release << dendl; + lgeneric_subdout(pipe->msgr->cct, ms, 10) << *pipe << "DelayedDelivery::entry dequeuing message " << m << " for delivery, past " << release << dendl; delay_queue.pop_front(); if (flush_count > 0) { --flush_count; @@ -245,7 +249,7 @@ void *Pipe::DelayedDelivery::entry() } active_flush = false; } - lgeneric_subdout(pipe->msgr->cct, ms, 20) << pipe->_pipe_prefix(_dout) << "DelayedDelivery::entry stop" << dendl; + lgeneric_subdout(pipe->msgr->cct, ms, 20) << *pipe << "DelayedDelivery::entry stop" << dendl; return NULL; } diff --git a/src/msg/simple/Pipe.h b/src/msg/simple/Pipe.h index ddfa99f78af3..0c1671a396d3 100644 --- a/src/msg/simple/Pipe.h +++ b/src/msg/simple/Pipe.h @@ -134,7 +134,7 @@ class DispatchQueue; SimpleMessenger *msgr; uint64_t conn_id; - ostream& _pipe_prefix(std::ostream *_dout); + ostream& _pipe_prefix(std::ostream &out) const; Pipe* get() { return static_cast(RefCountedObject::get()); diff --git a/src/osd/PG.cc b/src/osd/PG.cc index 9afcddac4e1d..cf79a83dd4aa 100644 --- a/src/osd/PG.cc +++ b/src/osd/PG.cc @@ -3003,8 +3003,8 @@ void PG::read_state(ObjectStore *store, bufferlist &bl) info_struct_v < 8 ? coll_t::meta() : coll, ghobject_t(info_struct_v < 8 ? OSD::make_pg_log_oid(pg_id) : pgmeta_oid), info, oss); - if (oss.str().length()) - osd->clog->error() << oss; + if (oss.tellp()) + osd->clog->error() << oss.rdbuf(); // log any weirdness log_weirdness();