Expand description
Enhanced Processor Architecture for exif-oxide
This module implements the sophisticated processor dispatch system designed to handle ExifTool’s 121+ ProcessBinaryData variants with trait-based architecture.
§Architecture Overview
- BinaryDataProcessor trait: Core abstraction for all processors
- ProcessorRegistry: Central registry with capability-based selection
- ProcessorContext: Rich context passing with metadata
- DispatchRule trait: Sophisticated conditional dispatch logic
- ProcessorCapability: Assessment system (Perfect/Good/Fallback/Incompatible)
§Migration Strategy
This system is built alongside the existing enum-based processor system to avoid breaking changes. The migration follows these phases:
- Phase 1: Build trait system (this module)
- Phase 2: Create compatibility bridge
- Phase 3: Convert existing processors
- Phase 4: Integration testing
- Phase 5: Remove deprecated enum system
§ExifTool Reference
Based on ExifTool’s PROCESS_PROC dispatch system and conditional SubDirectory processing patterns found throughout Canon.pm, Nikon.pm, and other manufacturer modules.
Re-exports§
pub use capability::ProcessorCapability;
pub use conditions::ConditionEvaluator;
pub use context::ProcessorContext;
pub use dispatch::DispatchRule;
pub use registry::ProcessorRegistry;
pub use traits::BinaryDataProcessor;
pub use traits::ProcessorKey;
pub use traits::ProcessorMetadata;
pub use traits::ProcessorResult;
pub use processors::*;
Modules§
- capability
- ProcessorCapability assessment system
- conditions
- Enhanced condition evaluation system for processor dispatch
- context
- ProcessorContext for rich metadata passing between processing layers
- dispatch
- Dispatch rules for sophisticated processor selection
- processors
- Concrete processor implementations
- registry
- ProcessorRegistry - Central registry for processor management and dispatch
- traits
- Core trait definitions for the enhanced processor architecture
Functions§
- get_
global_ registry - Get access to the global processor registry This is the main function that ExifReader and other components use to access processors