Expand description
Runtime context types for plugin service injection Runtime context types for plugin service injection.
This module provides SourceRuntimeContext and ReactionRuntimeContext structs
that contain Arc<T> instances for drasi-lib provided services. These contexts
are provided to plugins when they are added to DrasiLib via the initialize() method.
§Overview
Instead of multiple inject_* methods, plugins now receive all services through
a single initialize(context) call. This provides:
- Single initialization point: One call instead of multiple inject calls
- Guaranteed complete initialization: Context is complete or doesn’t exist
- Clearer API contract: All available services visible at a glance
- Extensibility: New services can be added without changing traits
§Example - Source Plugin
ⓘ
use drasi_lib::context::SourceRuntimeContext;
#[async_trait]
impl Source for MySource {
async fn initialize(&self, context: SourceRuntimeContext) {
// Store context for later use
self.base.initialize(context).await;
}
// ...
}§Example - Reaction Plugin
ⓘ
use drasi_lib::context::ReactionRuntimeContext;
#[async_trait]
impl Reaction for MyReaction {
async fn initialize(&self, context: ReactionRuntimeContext) {
// Store context for later use
self.base.initialize(context).await;
}
// ...
}Structs§
- Reaction
Runtime Context - Context provided to Reaction plugins during initialization.
- Source
Runtime Context - Context provided to Source plugins during initialization.