pub struct ModuleContext {
pub kernel: KernelContext,
pub services: Arc<ServiceRegistry>,
pub data_dir: PathBuf,
pub cache_dir: PathBuf,
/* private fields */
}Expand description
Context provided to modules during initialization.
Extends KernelContext with module-specific paths for data and cache storage,
plus access to the cross-module service registry.
This is passed to Module::init() and provides everything a module needs
to initialize itself.
§Example
use reovim_kernel::api::v1::{Module, ModuleContext, ProbeResult};
impl Module for MyModule {
fn init(&mut self, ctx: &ModuleContext) -> ProbeResult {
// Access kernel services
let bus = &ctx.kernel.event_bus;
// Access module-specific directories
let config_path = ctx.data_dir.join("config.toml");
let cache_path = ctx.cache_dir.join("cache.bin");
// Register services for other modules to discover
ctx.services.register(Arc::new(MyService::new()));
ProbeResult::Success
}
}Fields§
§kernel: KernelContextKernel context for core services.
services: Arc<ServiceRegistry>Service registry for cross-module service discovery.
Modules can register their services here during init() for other
modules to discover. See ServiceRegistry for usage patterns.
data_dir: PathBufModule’s data directory (persistent storage).
e.g., ~/.local/share/reovim/modules/<module-id>/
cache_dir: PathBufModule’s cache directory (ephemeral storage).
e.g., ~/.cache/reovim/modules/<module-id>/
Implementations§
Source§impl ModuleContext
impl ModuleContext
Sourcepub fn new(
kernel: KernelContext,
services: Arc<ServiceRegistry>,
data_dir: PathBuf,
cache_dir: PathBuf,
) -> Self
pub fn new( kernel: KernelContext, services: Arc<ServiceRegistry>, data_dir: PathBuf, cache_dir: PathBuf, ) -> Self
Create a new module context.
Sourcepub fn with_optional_deps(
kernel: KernelContext,
services: Arc<ServiceRegistry>,
data_dir: PathBuf,
cache_dir: PathBuf,
loaded_optional_deps: Vec<ModuleId>,
) -> Self
pub fn with_optional_deps( kernel: KernelContext, services: Arc<ServiceRegistry>, data_dir: PathBuf, cache_dir: PathBuf, loaded_optional_deps: Vec<ModuleId>, ) -> Self
Create a module context with optional dependencies info.
Sourcepub fn has_optional_dep(&self, id: &ModuleId) -> bool
pub fn has_optional_dep(&self, id: &ModuleId) -> bool
Sourcepub fn optional_deps(&self) -> &[ModuleId]
pub fn optional_deps(&self) -> &[ModuleId]
Get all loaded optional dependencies.
Returns a slice of ModuleIds for optional dependencies that were
successfully loaded before this module’s initialization.
§Example
use reovim_kernel::api::v1::ModuleContext;
fn init(ctx: &ModuleContext) {
for dep in ctx.optional_deps() {
println!("Optional dep available: {}", dep.as_str());
}
}Trait Implementations§
Source§impl Clone for ModuleContext
impl Clone for ModuleContext
Source§fn clone(&self) -> ModuleContext
fn clone(&self) -> ModuleContext
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more