Pass category name to category_metadata()

This commit is contained in:
Marcus Holland-Moritz 2023-07-18 18:40:04 +02:00
parent 465f8e090c
commit e08bbb5e94
7 changed files with 21 additions and 10 deletions

View File

@ -52,7 +52,8 @@ class categorizer {
virtual std::span<std::string_view const> categories() const = 0; virtual std::span<std::string_view const> categories() const = 0;
virtual bool is_single_fragment() const = 0; virtual bool is_single_fragment() const = 0;
virtual folly::dynamic category_metadata(fragment_category c) const = 0; virtual folly::dynamic category_metadata(std::string_view category_name,
fragment_category c) const = 0;
}; };
class random_access_categorizer : public categorizer { class random_access_categorizer : public categorizer {

View File

@ -64,6 +64,8 @@ class inode_fragments {
bool empty() const { return fragments_.empty(); } bool empty() const { return fragments_.empty(); }
void clear() { fragments_.clear(); }
explicit operator bool() const { return !empty(); } explicit operator bool() const { return !empty(); }
std::ostream& std::ostream&

View File

@ -245,9 +245,9 @@ std::string_view categorizer_manager_<LoggerPolicy>::category_name(
template <typename LoggerPolicy> template <typename LoggerPolicy>
folly::dynamic categorizer_manager_<LoggerPolicy>::category_metadata( folly::dynamic categorizer_manager_<LoggerPolicy>::category_metadata(
fragment_category c) const { fragment_category c) const {
auto categorizer = auto cat = DWARFS_NOTHROW(categories_.at(c.value()));
DWARFS_NOTHROW(categorizers_.at(categories_.at(c.value()).second)); auto categorizer = DWARFS_NOTHROW(categorizers_.at(cat.second));
return categorizer->category_metadata(c); return categorizer->category_metadata(cat.first, c);
} }
categorizer_manager::categorizer_manager(logger& lgr) categorizer_manager::categorizer_manager(logger& lgr)

View File

@ -64,7 +64,8 @@ class binary_categorizer_ final : public binary_categorizer_base {
bool is_single_fragment() const override { return false; } bool is_single_fragment() const override { return false; }
folly::dynamic category_metadata(fragment_category) const override { folly::dynamic
category_metadata(std::string_view, fragment_category) const override {
return folly::dynamic(); return folly::dynamic();
} }

View File

@ -159,7 +159,8 @@ class incompressible_categorizer_ final : public sequential_categorizer {
bool is_single_fragment() const override { return true; } bool is_single_fragment() const override { return true; }
folly::dynamic category_metadata(fragment_category) const override { folly::dynamic
category_metadata(std::string_view, fragment_category) const override {
return folly::dynamic(); return folly::dynamic();
} }

View File

@ -149,7 +149,8 @@ class libmagic_categorizer_ final : public libmagic_categorizer_base {
bool is_single_fragment() const override { return true; } bool is_single_fragment() const override { return true; }
folly::dynamic category_metadata(fragment_category) const override { folly::dynamic
category_metadata(std::string_view, fragment_category) const override {
return folly::dynamic(); return folly::dynamic();
} }

View File

@ -130,9 +130,14 @@ class pcmaudio_categorizer_ final : public pcmaudio_categorizer_base {
bool is_single_fragment() const override { return false; } bool is_single_fragment() const override { return false; }
folly::dynamic category_metadata(fragment_category c) const override { folly::dynamic category_metadata(std::string_view category_name,
DWARFS_CHECK(c.has_subcategory(), "expected pcmaudio to have subcategory"); fragment_category c) const override {
return meta_.rlock()->lookup(c.subcategory()); if (category_name == PCMAUDIO_CATEGORY) {
DWARFS_CHECK(c.has_subcategory(),
"expected PCMAUDIO to have subcategory");
return meta_.rlock()->lookup(c.subcategory());
}
return folly::dynamic();
} }
private: private: