Add and use category_prefix() function

This commit is contained in:
Marcus Holland-Moritz 2023-08-14 21:47:18 +02:00
parent a9ff74ee0c
commit b75e0c78a1
4 changed files with 52 additions and 12 deletions

View File

@ -172,6 +172,19 @@ class categorizer_manager {
std::unique_ptr<impl> impl_;
};
std::string category_prefix(std::shared_ptr<categorizer_manager> const& mgr,
fragment_category cat);
std::string category_prefix(std::unique_ptr<categorizer_manager> const& mgr,
fragment_category cat);
std::string
category_prefix(categorizer_manager const* mgr, fragment_category cat);
std::string category_prefix(std::shared_ptr<categorizer_manager> const& mgr,
fragment_category::value_type cat);
std::string category_prefix(std::unique_ptr<categorizer_manager> const& mgr,
fragment_category::value_type cat);
std::string category_prefix(categorizer_manager const* mgr,
fragment_category::value_type cat);
class categorizer_info {
public:
virtual ~categorizer_info() = default;

View File

@ -42,6 +42,42 @@ using namespace std::placeholders;
namespace po = boost::program_options;
std::string category_prefix(std::shared_ptr<categorizer_manager> const& mgr,
fragment_category cat) {
return category_prefix(mgr.get(), cat);
}
std::string category_prefix(std::unique_ptr<categorizer_manager> const& mgr,
fragment_category cat) {
return category_prefix(mgr.get(), cat);
}
std::string category_prefix(std::shared_ptr<categorizer_manager> const& mgr,
fragment_category::value_type cat) {
return category_prefix(mgr.get(), cat);
}
std::string category_prefix(std::unique_ptr<categorizer_manager> const& mgr,
fragment_category::value_type cat) {
return category_prefix(mgr.get(), cat);
}
std::string category_prefix(categorizer_manager const* mgr,
fragment_category::value_type cat) {
return category_prefix(mgr, fragment_category(cat));
}
std::string
category_prefix(categorizer_manager const* mgr, fragment_category cat) {
std::string prefix;
if (mgr) {
prefix = fmt::format(
"[{}{}] ", mgr->category_name(cat.value()),
cat.has_subcategory() ? fmt::format("/{}", cat.subcategory()) : "");
}
return prefix;
}
std::string
categorizer::category_metadata(std::string_view, fragment_category) const {
return std::string();

View File

@ -45,13 +45,9 @@ fragment_chunkable::~fragment_chunkable() = default;
size_t fragment_chunkable::size() const { return frag_.size(); }
std::string fragment_chunkable::description() const {
std::string prefix;
if (catmgr_) {
prefix =
fmt::format("{} ", catmgr_->category_name(frag_.category().value()));
}
return fmt::format("{}fragment at offset {} of inode {} [{}] - size: {}",
prefix, offset_, ino_.num(), ino_.any()->name(), size());
category_prefix(catmgr_, frag_.category()), offset_,
ino_.num(), ino_.any()->name(), size());
}
std::span<uint8_t const> fragment_chunkable::span() const {

View File

@ -585,12 +585,7 @@ template <typename LoggerPolicy>
auto inode_manager_<LoggerPolicy>::ordered_span(fragment_category cat,
worker_group& wg) const
-> sortable_inode_span {
std::string prefix;
if (opts_.categorizer_mgr) {
prefix =
fmt::format("[{}] ", opts_.categorizer_mgr->category_name(cat.value()));
}
auto prefix = category_prefix(opts_.categorizer_mgr, cat);
auto opts = opts_.fragment_order.get(cat);
auto span = sortable_span();