Skip to main content

Module context

Module context 

Source
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§

ReactionRuntimeContext
Context provided to Reaction plugins during initialization.
SourceRuntimeContext
Context provided to Source plugins during initialization.