diff --git a/include/dwarfs/categorizer.h b/include/dwarfs/categorizer.h index 0d084728..d5ff747f 100644 --- a/include/dwarfs/categorizer.h +++ b/include/dwarfs/categorizer.h @@ -103,9 +103,7 @@ class categorizer_job { explicit operator bool() const { return impl_ != nullptr; } - bool has_multi_fragment_sequential_categorizers() const { - return impl_->has_multi_fragment_sequential_categorizers(); - } + bool best_result_found() const { return impl_->best_result_found(); } class impl { public: @@ -115,7 +113,7 @@ class categorizer_job { virtual void categorize_random_access(std::span data) = 0; virtual void categorize_sequential(std::span data) = 0; virtual inode_fragments result() = 0; - virtual bool has_multi_fragment_sequential_categorizers() const = 0; + virtual bool best_result_found() const = 0; }; private: diff --git a/src/dwarfs/categorizer.cpp b/src/dwarfs/categorizer.cpp index 78193941..fc3ae710 100644 --- a/src/dwarfs/categorizer.cpp +++ b/src/dwarfs/categorizer.cpp @@ -45,7 +45,6 @@ class categorizer_manager_private : public categorizer_manager::impl { categorizers() const = 0; virtual fragment_category::value_type category(std::string_view cat) const = 0; - virtual bool has_multi_fragment_sequential_categorizers() const = 0; }; template @@ -63,7 +62,7 @@ class categorizer_job_ final : public categorizer_job::impl { void categorize_random_access(std::span data) override; void categorize_sequential(std::span data) override; inode_fragments result() override; - bool has_multi_fragment_sequential_categorizers() const override; + bool best_result_found() const override; private: LOG_PROXY_DECL(LoggerPolicy); @@ -157,9 +156,8 @@ inode_fragments categorizer_job_::result() { } template -bool categorizer_job_< - LoggerPolicy>::has_multi_fragment_sequential_categorizers() const { - return mgr_.has_multi_fragment_sequential_categorizers(); +bool categorizer_job_::best_result_found() const { + return is_global_best_; } categorizer_job::categorizer_job() = default; @@ -192,10 +190,6 @@ class categorizer_manager_ final : public categorizer_manager_private { return it->second; } - bool has_multi_fragment_sequential_categorizers() const override { - return has_multi_fragment_sequential_categorizers_; - } - private: void add_category(std::string_view cat, size_t categorizer_index) { if (catmap_.emplace(cat, categories_.size()).second) { @@ -210,7 +204,6 @@ class categorizer_manager_ final : public categorizer_manager_private { std::vector> categorizers_; std::vector> categories_; std::unordered_map catmap_; - bool has_multi_fragment_sequential_categorizers_{false}; }; template @@ -220,11 +213,6 @@ void categorizer_manager_::add( add_category(c, categorizers_.size()); } - if (!c->is_single_fragment() && - dynamic_cast(c.get())) { - has_multi_fragment_sequential_categorizers_ = true; - } - categorizers_.emplace_back(std::move(c)); } diff --git a/src/dwarfs/inode_manager.cpp b/src/dwarfs/inode_manager.cpp index 1290365e..44eb7e2d 100644 --- a/src/dwarfs/inode_manager.cpp +++ b/src/dwarfs/inode_manager.cpp @@ -155,10 +155,6 @@ class inode_ : public inode { if (mm) { if (catjob) { - DWARFS_CHECK( - !catjob.has_multi_fragment_sequential_categorizers(), - "multi-fragment sequential categorizers are not supported"); - catjob.set_total_size(mm->size()); catjob.categorize_random_access(mm->span()); }