pub struct ComponentFactory { /* private fields */ }Expand description
Component factory for creating configured instances.
This factory provides a centralized way to create core components with proper configuration injection, ensuring consistent component initialization across the application.
§Examples
use subx_core::core::ComponentFactory;
use subx_core::config::ProductionConfigService;
use std::sync::Arc;
let config_service = Arc::new(ProductionConfigService::new()?);
let factory = ComponentFactory::new(config_service.as_ref())?;
// Create components with proper configuration
let match_engine = factory.create_match_engine()?;
let file_manager = factory.create_file_manager();
let ai_provider = factory.create_ai_provider()?;Implementations§
Source§impl ComponentFactory
impl ComponentFactory
Sourcepub fn new(config_service: &dyn ConfigService) -> Result<Self>
pub fn new(config_service: &dyn ConfigService) -> Result<Self>
Sourcepub fn with_reporter(self, reporter: Arc<dyn Reporter>) -> Self
pub fn with_reporter(self, reporter: Arc<dyn Reporter>) -> Self
Attach a reporting sink, consuming and returning the factory.
The reporter is propagated into every component this factory builds, so one call at a command boundary wires an entire command.
§Arguments
reporter- Sink shared by every component created afterwards.
Sourcepub fn reporter(&self) -> Arc<dyn Reporter> ⓘ
pub fn reporter(&self) -> Arc<dyn Reporter> ⓘ
Clone the factory’s reporting sink for attachment to a component.
Public so callers that construct a component outside the factory’s
control (e.g. a MatchEngine around an externally supplied AI
client) can still wire the command’s single reporter — the CLI’s
match command does exactly this while adopting
ComponentFactory::match_config.
Sourcepub fn match_config(&self) -> MatchConfig
pub fn match_config(&self) -> MatchConfig
Return the MatchConfig this
factory’s loaded Config implies.
The returned value carries the four configuration-derived fields read
from the loaded config (max_sample_length, ai_model,
backup_enabled, max_subtitle_bytes) plus the four defaults this
factory pins for every caller: confidence_threshold 0.8 (the
default value, kept configurable by overriding it here rather than in
the config file), enable_content_analysis: true,
relocation_mode: FileRelocationMode::None and
conflict_resolution: ConflictResolution::AutoRename.
confidence_threshold, backup_enabled, relocation_mode and
conflict_resolution are caller-controlled: every MatchConfig
field is public, so callers SHOULD mutate the returned value (two
lines: let mut c = factory.match_config(); c.relocation_mode = mode;)
instead of writing a MatchConfig struct literal — a literal must be
edited whenever the struct gains a ninth field, this route never
needs touching.
§Returns
A freshly built MatchConfig; identical in every field to the one
ComponentFactory::create_match_engine constructs.
§Examples
use subx_core::config::TestConfigBuilder;
use subx_core::core::ComponentFactory;
let config_service = TestConfigBuilder::new().build_service();
let factory = ComponentFactory::new(&config_service)?;
let mut match_config = factory.match_config();
match_config.confidence_threshold = 0.9;
assert_eq!(match_config.confidence_threshold, 0.9);Sourcepub fn create_match_engine_with(
&self,
config: MatchConfig,
) -> Result<MatchEngine>
pub fn create_match_engine_with( &self, config: MatchConfig, ) -> Result<MatchEngine>
Create a match engine from a caller-supplied configuration.
Builds the AI provider exactly as every other create_* method does
(through ComponentFactory::create_ai_provider), uses config
unmodified, and attaches the factory’s reporter to the produced
engine — the same propagation terms as
ComponentFactory::create_match_engine.
§Arguments
config- The match configuration to use verbatim. Prefer deriving it fromComponentFactory::match_configand overwriting the caller-controlled fields.
§Returns
A MatchEngine wired with the factory’s AI provider, the supplied
config, and the factory’s reporter.
§Errors
Returns an error if AI provider creation fails.
§Examples
use subx_core::config::TestConfigBuilder;
use subx_core::core::ComponentFactory;
use subx_core::core::matcher::engine::FileRelocationMode;
let config_service = TestConfigBuilder::new().build_service();
let factory = ComponentFactory::new(&config_service)?;
// Two-line relocation-mode override:
let mut match_config = factory.match_config();
match_config.relocation_mode = FileRelocationMode::Copy;
let engine = factory.create_match_engine_with(match_config)?;Sourcepub fn create_match_engine(&self) -> Result<MatchEngine>
pub fn create_match_engine(&self) -> Result<MatchEngine>
Create a match engine with AI configuration.
Returns a properly configured MatchEngine instance using
the AI configuration section. Equivalent to
create_match_engine_with(match_config()); see
ComponentFactory::match_config for the field-by-field contract.
§Errors
Returns an error if AI provider creation fails.
Sourcepub fn create_file_manager(&self) -> FileManager
pub fn create_file_manager(&self) -> FileManager
Create a file manager with general configuration.
Returns a properly configured FileManager instance using the general configuration section.
Sourcepub fn create_ai_provider(&self) -> Result<Box<dyn AIProvider>>
pub fn create_ai_provider(&self) -> Result<Box<dyn AIProvider>>
Create an AI provider with AI configuration.
Returns a properly configured AI provider instance based on the provider type specified in the AI configuration.
§Errors
Returns an error if the provider type is unsupported or provider creation fails.
Sourcepub fn config(&self) -> &Config
pub fn config(&self) -> &Config
Get a reference to the current configuration.
Returns a reference to the configuration used by this factory.
Sourcepub fn create_vad_sync_detector(&self) -> Result<VadSyncDetector>
pub fn create_vad_sync_detector(&self) -> Result<VadSyncDetector>
Create a VAD sync detector with VAD configuration.
Returns a properly configured VadSyncDetector instance using the VAD settings.
§Errors
Returns an error if VAD sync detector creation fails.
Sourcepub fn create_vad_detector(&self) -> Result<LocalVadDetector>
pub fn create_vad_detector(&self) -> Result<LocalVadDetector>
Create a local VAD detector for audio processing.
Returns a properly configured LocalVadDetector instance.
§Errors
Returns an error if local VAD detector initialization fails.
Sourcepub fn create_audio_processor(&self) -> Result<VadAudioProcessor>
pub fn create_audio_processor(&self) -> Result<VadAudioProcessor>
Create an audio processor for VAD operations.
Returns a properly configured VadAudioProcessor instance.
§Errors
Returns an error if audio processor initialization fails.
Sourcepub fn create_translation_engine(&self) -> Result<TranslationEngine>
pub fn create_translation_engine(&self) -> Result<TranslationEngine>
Create a translation engine using the configured AI provider and translation settings.
§Errors
Returns an error when AI provider creation fails or the configured translation batch size is invalid.