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:
HostConfig
Host configuration
extensions:
Arc<RwLock<HashMap<String,
ExtensionInfo>>>
Loaded extensions
stats:
Arc<RwLock<ExtensionStats>>
Extension statistics
Implementations§
Source§
impl
ExtensionManagerImpl
impl ExtensionManagerImpl
Source
pub fn
new(wasm_runtime:
Arc<WASMRuntime>, config:
HostConfig) -> Self
pub fn new(wasm_runtime: Arc<WASMRuntime>, config: HostConfig) -> Self
Create a new extension manager
Source
pub 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
Source
pub async fn
unload_extension(&self, extension_id:
&str) ->
Result<()>
pub async fn unload_extension(&self, extension_id: &str) -> Result<()>
Unload an extension
Source
pub 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
Source
pub async fn
list_extensions(&self) ->
Vec<String>
pub async fn list_extensions(&self) -> Vec<String>
List all loaded extensions
Source
pub 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
Source
pub 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
Source
pub async fn
stats(&self) ->
ExtensionStats
pub async fn stats(&self) -> ExtensionStats
Get extension manager statistics
Source
pub async fn
discover_extensions(&self) ->
Result<Vec<PathBuf>>
pub async fn discover_extensions(&self) -> Result<Vec<PathBuf>>
Discover extensions in configured paths
Source
async 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
Source
fn
parse_manifest(&self, path: &Path) ->
Result<Value>
fn parse_manifest(&self, path: &Path) -> Result<Value>
Parse extension manifest
Source
fn
extract_extension_id(&self, manifest: &Value) ->
Result<String>
fn extract_extension_id(&self, manifest: &Value) -> Result<String>
Extract extension ID from manifest
Source
fn
determine_extension_type( &self, path: &Path, manifest: &Value, ) ->
Result<ExtensionType>
fn determine_extension_type( &self, path: &Path, manifest: &Value, ) -> Result<ExtensionType>
Determine extension type
Source
fn
extract_activation_events(&self, manifest: &Value) ->
Vec<String>
fn extract_activation_events(&self, manifest: &Value) -> Vec<String>
Extract activation events from manifest
Source
fn
extract_capabilities(&self, manifest: &Value) ->
Vec<String>
fn extract_capabilities(&self, manifest: &Value) -> Vec<String>
Extract capabilities from manifest
Source
fn
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 UnsafeUnpin for ExtensionManagerImpl
impl !UnwindSafe for ExtensionManagerImpl
Blanket Implementations§
Source§
impl<T>
BorrowMut<T> for T
where T: ?Sized,
impl<T>
BorrowMut<T> for T
where T: ?Sized,
Source§
fn
borrow_mut(&mut self) ->
&mut T
fn borrow_mut(&mut self) -> &mut T
§
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>
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 more
Source§
fn
into_either_with<F>(self, into_left: F)
->
Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
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 more
Source§
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>
T in
a tonic::Request