|
| constexpr | reduce_visitor () |
| | Constructs an instance with the default timeout of ten seconds.
|
| |
| constexpr | reduce_visitor (std::chrono::steady_clock::duration _timeout) |
| | Constructs an instance with the specified timeout.
|
| |
| virtual result< directory_handle > | directory_open_failed (void *data, result< void >::error_type &&error, const directory_handle &dirh, path_view leaf, size_t depth) noexcept override |
| | This override ignores failures to traverse into the directory, and tries renaming the item into the base directory.
|
| |
| virtual result< void > | post_enumeration (void *data, const directory_handle &dirh, directory_handle::buffers_type &contents, size_t depth) noexcept override |
| | This override invokes deletion of all non-directory items. If there are no directory items, also deletes the directory.
|
| |
| virtual result< bool > | unlink_failed (void *data, result< void >::error_type &&error, const directory_handle &dirh, directory_entry &entry, size_t depth) noexcept |
| | Called when the unlink of a file entry failed. The default implementation attempts to rename the entry into the base directory. If your reimplementation achieves the unlink, return true.
|
| |
| virtual result< bool > | rename_failed (void *data, result< void >::error_type &&error, const directory_handle &dirh, directory_entry &entry, size_t depth) noexcept |
| | Called when the rename of a file entry into the base directory failed. The default implementation ignores the failure. If your reimplementation achieves the rename, return true.
|
| |
| virtual result< void > | reduction_round (void *data, size_t round_completed, size_t items_unlinked, size_t items_remaining) noexcept |
| | Called when we have performed a single full round of reduction.
|
| |
| virtual result< bool > | pre_enumeration (void *data, const directory_handle &dirh, size_t depth) noexcept |
| | Called to decide whether to enumerate a directory.
|
| |
| virtual result< void > | stack_updated (void *data, size_t dirs_processed, size_t known_dirs_remaining, size_t depth_processed, size_t known_depth_remaining) noexcept |
| | Called whenever the traversed stack of directory hierarchy is updated. This can act as an estimated progress indicator, or to give an accurate progress indicator by matching it against a previous traversal.
|
| |
| virtual result< size_t > | finished (void *data, result< size_t > result) noexcept |
| | Called when a traversal finishes, whether due to success or failure. Always called from the original thread.
|
| |
A visitor for the filesystem traversal and reduction algorithm.
Note that at any time, returning a failure causes reduce() to exit as soon as possible with the same failure.
You can override the members here inherited from traverse_visitor, however note that reduce() is entirely implemented using traverse(), so not calling the implementations here will affect operation.
| virtual result< bool > llfio_v2_xxx::algorithm::traverse_visitor::pre_enumeration |
( |
void * |
data, |
|
|
const directory_handle & |
dirh, |
|
|
size_t |
depth |
|
) |
| |
|
inlinevirtualnoexceptinherited |
Called to decide whether to enumerate a directory.
Note that it is more efficient to ignore the directory entry in post_enumeration() than to ignore it here, as a handle is opened for the directory before this callback. Equally, if you need that handle to inspect the directory e.g. to check if one is entering a different filesystem from the root, here is best.
The default returns true.
- Note
- May be called from multiple kernel threads concurrently.
75 {
76 (void) data;
77 (void) dirh;
78 (void) depth;
79 return true;
80 }