return o;
}
+// -- ScrubMapBuilder --
+
+ostream& operator<<(ostream& out, const ScrubMapBuilder& bldr)
+{
+ return out << bldr.fmt_print();
+}
+
+std::string ScrubMapBuilder::fmt_print() const
+{
+ const string elem = pos < ls.size() ? fmt::format(" {}", ls[pos]) : "";
+ const string byte_pos = data_pos < 0 ? fmt::format(" byte {}", data_pos) : "";
+ const string key = !omap_pos.empty() ? fmt::format(" key {}", omap_pos) : "";
+ const string ret_s = ret ? fmt::format(" ret {}", ret) : "";
+
+ return fmt::format(
+ "({}/{}{} metadata_done {}{}{}{}{})",
+ pos, ls.size(), elem, static_cast<int>(metadata_done),
+ byte_pos, key, (deep ? " deep" : ""), ret_s);
+}
+
// -- OSDOp --
ostream& operator<<(ostream& out, const OSDOp& op)
omap_bytes = 0;
}
- friend std::ostream& operator<<(std::ostream& out, const ScrubMapBuilder& pos) {
- out << "(" << pos.pos << "/" << pos.ls.size();
- if (pos.pos < pos.ls.size()) {
- out << " " << pos.ls[pos.pos];
- }
- out << " metadata_done " << pos.metadata_done;
- if (pos.data_pos < 0) {
- out << " byte " << pos.data_pos;
- }
- if (!pos.omap_pos.empty()) {
- out << " key " << pos.omap_pos;
- }
- if (pos.deep) {
- out << " deep";
- }
- if (pos.ret) {
- out << " ret " << pos.ret;
- }
- return out << ")";
- }
+ std::string fmt_print() const;
+
+ friend std::ostream& operator<<(std::ostream& out, const ScrubMapBuilder& pos);
};
struct watch_item_t {