Filesystem

Namespace: dftracer::utils::utilities::filesystem

class DirectoryScannerUtility : public dftracer::utils::utilities::Utility<DirectoryScannerUtilityInput, std::vector<FileEntry>, utilities::tags::Parallelizable, utilities::tags::NeedsContext>

Utility that scans a directory and returns a list of file entries.

This utility scans a directory (optionally recursively) and returns metadata about each file/subdirectory found.

Features:

  • Non-recursive scanning (default)

  • Recursive scanning when Directory.recursive = true

  • Returns file metadata (path, size, type)

  • Can be composed with other utilities in a pipeline

Usage:

auto scanner = std::make_shared<DirectoryScanner>();
auto result = scanner->process(Directory{"/path/to/dir"});
for (const auto& entry : result) {
    std::cout << entry.path << " - " << entry.size << " bytes\n";
}

Public Functions

DirectoryScannerUtility() = default
~DirectoryScannerUtility() = default
inline coro::CoroTask<std::vector<FileEntry>> process(const DirectoryScannerUtilityInput &input) override

Scan directory and return list of file entries.

Parameters:

input – Directory to scan (with optional recursive flag)

Throws:

fs::filesystem_error – if directory doesn’t exist or is inaccessible

Returns:

Vector of FileEntry objects

struct DirectoryScannerUtilityInput

Input structure representing a directory to scan.

Public Functions

inline explicit DirectoryScannerUtilityInput(fs::path p, bool rec = false, bool with_size = true)
inline bool operator==(const DirectoryScannerUtilityInput &other) const
inline bool operator!=(const DirectoryScannerUtilityInput &other) const

Public Members

fs::path path
bool recursive = false
bool populate_size = true
struct FileEntry

Output structure representing a file entry.

Public Functions

FileEntry() = default
inline explicit FileEntry(const fs::path &p, bool populate_size = true)
inline explicit FileEntry(const fs::directory_entry &entry, bool populate_size = true)

Public Members

fs::path path
std::size_t size = 0
bool is_directory = false
bool is_regular_file = false
class PatternDirectoryScannerUtility : public dftracer::utils::utilities::Utility<PatternDirectoryScannerUtilityInput, std::vector<FileEntry>, utilities::tags::Parallelizable, utilities::tags::NeedsContext>

Directory scanner that filters files by patterns/extensions.

This component extends DirectoryScanner by adding pattern matching for file extensions or patterns. Supports:

  • Extension matching: “.pfw”, “.gz”

  • Suffix matching: “.pfw.gz”

  • Simple glob patterns: “*.txt” (future enhancement)

Usage:

PatternDirectoryScanner scanner;
auto files = scanner.process(
    PatternDirectory{"/path/to/dir", {".pfw", ".pfw.gz"}}
);

Public Functions

PatternDirectoryScannerUtility() = default
inline coro::CoroTask<std::vector<FileEntry>> process(const PatternDirectoryScannerUtilityInput &input) override

Scan directory and filter by patterns.

Parameters:

input – Directory path, patterns, and recursive flag

Returns:

Vector of file entries matching patterns

struct PatternDirectoryScannerUtilityInput

Input for pattern-based directory scanning.

Public Functions

PatternDirectoryScannerUtilityInput() = default
inline PatternDirectoryScannerUtilityInput(std::string p, std::vector<std::string> pats, bool rec = false, bool with_size = true)
inline PatternDirectoryScannerUtilityInput &with_patterns(std::vector<std::string> pats)
inline PatternDirectoryScannerUtilityInput &with_recursive(bool rec)
inline PatternDirectoryScannerUtilityInput &with_populate_size(bool with_size)

Public Members

std::string path
bool recursive = false
bool populate_size = true
std::vector<std::string> patterns

Public Static Functions

static inline PatternDirectoryScannerUtilityInput from_path(std::string p)