pub struct ComponentManager { /* private fields */ }Implementations§
Source§impl ComponentManager
impl ComponentManager
pub fn from_lock( lock: ComponentLock, cache_root: impl Into<PathBuf>, target: impl Into<String>, host: AlefHostApiV1, ) -> Result<Self, ComponentError>
Sourcepub fn offline(self, offline: bool) -> Self
pub fn offline(self, offline: bool) -> Self
Disable network downloads: Self::ensure_contract and Self::prefetch fail a
missing artifact with ComponentError::Offline instead of attempting a request. An
artifact already cached on disk is unaffected. Generated bindings call this when the
crate-specific {CRATE}_COMPONENT_OFFLINE environment variable is set.
Sourcepub fn ensure_contract(
&self,
component_id: &str,
contract_name: &str,
entry_symbol: &[u8],
) -> Result<Arc<LoadedComponent>, ComponentError>
pub fn ensure_contract( &self, component_id: &str, contract_name: &str, entry_symbol: &[u8], ) -> Result<Arc<LoadedComponent>, ComponentError>
Load one contract a component provides.
entry_symbol is that contract’s NUL-terminated producer entry-point
symbol (alef::codegen::component::entry_point_symbol); the caller
supplies it because computing it requires the same identifier-casing
logic the producer used, which this crate does not depend on.
Concurrent calls for the same (component_id, contract_name) coalesce onto one
download-and-load: a second caller waits behind the first instead of racing a
duplicate download or dlopen. A call for a different key is unaffected and proceeds
immediately – the mutex guarding the loaded-component map is only ever held for a
map lookup or insert, never across I/O.
pub fn prefetch( &self, component_ids: &[&str], ) -> Result<Vec<CachedArtifact>, ComponentError>
Sourcepub fn status(
&self,
component_id: &str,
) -> Result<ComponentStatus, ComponentError>
pub fn status( &self, component_id: &str, ) -> Result<ComponentStatus, ComponentError>
Report where component_id currently stands. Unlike Self::ensure_contract,
Self::prefetch, and Self::cache_path, a Bundled entry is a legitimate answer
here rather than a failure: it is this manager’s way of saying “linked in ahead of
time, never downloaded or loaded through me”, not an error.