pub struct ExtensionManagerImpl {
wasm_runtime: Arc<WASMRuntime>,
config: HostConfig,
extensions: Arc<RwLock<HashMap<String, ExtensionInfo>>>,
stats: Arc<RwLock<ExtensionStats>>,
}Expand description
Extension manager for handling extension lifecycle
Fields§
§wasm_runtime: Arc<WASMRuntime>WASM runtime for executing extensions
config: HostConfigHost configuration
extensions: Arc<RwLock<HashMap<String, ExtensionInfo>>>Loaded extensions
stats: Arc<RwLock<ExtensionStats>>Extension statistics
Implementations§
Source§impl ExtensionManagerImpl
impl ExtensionManagerImpl
Sourcepub fn new(wasm_runtime: Arc<WASMRuntime>, config: HostConfig) -> Self
pub fn new(wasm_runtime: Arc<WASMRuntime>, config: HostConfig) -> Self
Create a new extension manager
Sourcepub async fn load_extension(&self, path: &PathBuf) -> Result<String>
pub async fn load_extension(&self, path: &PathBuf) -> Result<String>
Load an extension from a path
Sourcepub async fn unload_extension(&self, extension_id: &str) -> Result<()>
pub async fn unload_extension(&self, extension_id: &str) -> Result<()>
Unload an extension
Sourcepub async fn get_extension(&self, extension_id: &str) -> Option<ExtensionInfo>
pub async fn get_extension(&self, extension_id: &str) -> Option<ExtensionInfo>
Get an extension by ID
Sourcepub async fn list_extensions(&self) -> Vec<String>
pub async fn list_extensions(&self) -> Vec<String>
List all loaded extensions
Sourcepub async fn list_extensions_by_state(
&self,
state: ExtensionState,
) -> Vec<ExtensionInfo>
pub async fn list_extensions_by_state( &self, state: ExtensionState, ) -> Vec<ExtensionInfo>
List extensions in a specific state
Sourcepub async fn update_state(
&self,
extension_id: &str,
state: ExtensionState,
) -> Result<()>
pub async fn update_state( &self, extension_id: &str, state: ExtensionState, ) -> Result<()>
Update extension state
Sourcepub async fn stats(&self) -> ExtensionStats
pub async fn stats(&self) -> ExtensionStats
Get extension manager statistics
Sourcepub async fn discover_extensions(&self) -> Result<Vec<PathBuf>>
pub async fn discover_extensions(&self) -> Result<Vec<PathBuf>>
Discover extensions in configured paths
Sourceasync fn discover_in_path(&self, path: &str) -> Result<Vec<PathBuf>>
async fn discover_in_path(&self, path: &str) -> Result<Vec<PathBuf>>
Discover extensions in a specific path
Sourcefn parse_manifest(&self, path: &Path) -> Result<Value>
fn parse_manifest(&self, path: &Path) -> Result<Value>
Parse extension manifest
Sourcefn extract_extension_id(&self, manifest: &Value) -> Result<String>
fn extract_extension_id(&self, manifest: &Value) -> Result<String>
Extract extension ID from manifest
Sourcefn determine_extension_type(
&self,
path: &Path,
manifest: &Value,
) -> Result<ExtensionType>
fn determine_extension_type( &self, path: &Path, manifest: &Value, ) -> Result<ExtensionType>
Determine extension type
Sourcefn extract_activation_events(&self, manifest: &Value) -> Vec<String>
fn extract_activation_events(&self, manifest: &Value) -> Vec<String>
Extract activation events from manifest
Sourcefn extract_capabilities(&self, manifest: &Value) -> Vec<String>
fn extract_capabilities(&self, manifest: &Value) -> Vec<String>
Extract capabilities from manifest
Sourcefn extract_dependencies(&self, manifest: &Value) -> Vec<String>
fn extract_dependencies(&self, manifest: &Value) -> Vec<String>
Extract dependencies from manifest
Auto Trait Implementations§
impl Freeze for ExtensionManagerImpl
impl !RefUnwindSafe for ExtensionManagerImpl
impl Send for ExtensionManagerImpl
impl Sync for ExtensionManagerImpl
impl Unpin for ExtensionManagerImpl
impl !UnwindSafe for ExtensionManagerImpl
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
Wrap the input message
T in a tonic::Request