Expand description
§ScanFile
§File: Indexing/Scan/ScanFile.rs
§Role in Air Architecture
Provides individual file scanning functionality for the File Indexer service, handling reading, metadata extraction, and categorization of files for indexing.
§Primary Responsibility
Scan individual files to extract metadata, content, and prepare them for indexing operations.
§Secondary Responsibilities
- File access validation and permission checking
- Encoding detection for text files
- Language detection for code files
- File size validation
- Symbolic link detection
§Dependencies
External Crates:
tokio- Async file I/O operationssha2- Checksum calculation for file integrity
Internal Modules:
crate::Result- Error handling typecrate::AirError- Error typescrate::Configuration::IndexingConfig- Indexing configurationsuper::super::State::CreateState- State structure definitionssuper::Process::ProcessContent- Content processing operations
§Dependents
Indexing::Scan::ScanDirectory- Batch file processingIndexing::Watch::WatchFile- Individual file change handlingIndexing::mod::FileIndexer- Main file indexer implementation
§VSCode Pattern Reference
Inspired by VSCode’s file scanning in
src/vs/workbench/services/files/
§Security Considerations
- Path canonicalization before access
- File size limits enforced
- Timeout protection for I/O operations
- Permission checking before reads
§Performance Considerations
- Asynchronous file reading
- Batch processing operations
- Memory-efficient streaming for large files
- Cached metadata when available
§Error Handling Strategy
File scanning returns Results with detailed error messages about why a file cannot be scanned or accessed. Errors are logged and individual file failures don’t halt batch operations.
§Thread Safety
File scanning operations are designed for parallel execution and
Functions§
- Calculate
Checksum - Calculate SHA-256 checksum for file content
- File
Modified Since - Check if file has been modified since last indexed
- GetFile
Size - Get file size with error handling
- GetPermissions
String - Get file permissions as string
- Index
File Internal - Index a single file internally with comprehensive validation
- IsBinary
File - Check if file is binary (not suitable for indexing)
- IsText
File - Check if file is text-based (likely to be code or documentation)
- Scan
File Metadata - Scan file and return just the metadata (without symbols)
- Validate
File Access - Validate file access and permissions before scanning