mirror of
https://github.com/mhx/dwarfs.git
synced 2025-09-11 05:23:29 -04:00
Refactor inode needs_scan method
This commit is contained in:
parent
bacdef0ac3
commit
a2e6b93512
@ -46,7 +46,6 @@ class inode : public object {
|
|||||||
using files_vector = folly::small_vector<file*, 1>;
|
using files_vector = folly::small_vector<file*, 1>;
|
||||||
|
|
||||||
virtual void set_files(files_vector&& fv) = 0;
|
virtual void set_files(files_vector&& fv) = 0;
|
||||||
virtual bool needs_scan(inode_options const& opts, size_t size) const = 0;
|
|
||||||
virtual void set_similarity_valid(inode_options const& opts) = 0;
|
virtual void set_similarity_valid(inode_options const& opts) = 0;
|
||||||
virtual void scan(mmif* mm, inode_options const& options) = 0;
|
virtual void scan(mmif* mm, inode_options const& options) = 0;
|
||||||
virtual void set_num(uint32_t num) = 0;
|
virtual void set_num(uint32_t num) = 0;
|
||||||
|
@ -78,7 +78,11 @@ struct inode_options {
|
|||||||
bool with_nilsimsa{false};
|
bool with_nilsimsa{false};
|
||||||
std::optional<size_t> max_similarity_scan_size;
|
std::optional<size_t> max_similarity_scan_size;
|
||||||
|
|
||||||
bool needs_scan() const { return with_similarity || with_nilsimsa; }
|
bool needs_scan(size_t size) const {
|
||||||
|
return (with_similarity || with_nilsimsa) &&
|
||||||
|
(!max_similarity_scan_size ||
|
||||||
|
size <= max_similarity_scan_size.value());
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
enum class file_order_mode { NONE, PATH, SCRIPT, SIMILARITY, NILSIMSA };
|
enum class file_order_mode { NONE, PATH, SCRIPT, SIMILARITY, NILSIMSA };
|
||||||
|
@ -308,7 +308,7 @@ void file_scanner_::add_inode(file* p) {
|
|||||||
|
|
||||||
p->set_inode(inode);
|
p->set_inode(inode);
|
||||||
|
|
||||||
if (inode->needs_scan(ino_opts_, p->size())) {
|
if (ino_opts_.needs_scan(p->size())) {
|
||||||
wg_.add_job([this, p, inode = std::move(inode)] {
|
wg_.add_job([this, p, inode = std::move(inode)] {
|
||||||
std::shared_ptr<mmif> mm;
|
std::shared_ptr<mmif> mm;
|
||||||
auto const size = p->size();
|
auto const size = p->size();
|
||||||
|
@ -127,11 +127,6 @@ class inode_ : public inode {
|
|||||||
files_ = std::move(fv);
|
files_ = std::move(fv);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool needs_scan(inode_options const& opts, size_t size) const override {
|
|
||||||
return opts.needs_scan() && (!opts.max_similarity_scan_size ||
|
|
||||||
size <= opts.max_similarity_scan_size.value());
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
void
|
||||||
set_similarity_valid(inode_options const& opts [[maybe_unused]]) override {
|
set_similarity_valid(inode_options const& opts [[maybe_unused]]) override {
|
||||||
#ifndef NDEBUG
|
#ifndef NDEBUG
|
||||||
|
Loading…
x
Reference in New Issue
Block a user