pub struct RuntimeReconfiguration<'a> { /* private fields */ }Expand description
Non-escapable reconfiguration edit view.
Implementations§
Source§impl RuntimeReconfiguration<'_>
impl RuntimeReconfiguration<'_>
Sourcepub fn execution_policy(&mut self, policy: ExecutionPolicy) -> &mut Self
pub fn execution_policy(&mut self, policy: ExecutionPolicy) -> &mut Self
Replace the candidate execution policy.
Sourcepub fn register_engine(
&mut self,
value: EngineRegistration,
) -> Result<&mut Self, RuntimeConfigError>
pub fn register_engine( &mut self, value: EngineRegistration, ) -> Result<&mut Self, RuntimeConfigError>
Register a new engine in this reconfiguration.
§Errors
Returns RuntimeConfigError::DuplicateEngine if a different candidate
with the same engine ID is already present.
Sourcepub fn replace_engine(
&mut self,
value: EngineRegistration,
) -> Result<&mut Self, RuntimeConfigError>
pub fn replace_engine( &mut self, value: EngineRegistration, ) -> Result<&mut Self, RuntimeConfigError>
Replace an existing engine in this reconfiguration.
§Errors
Returns RuntimeConfigError::MissingEngine if the engine ID is absent.
Sourcepub fn remove_engine(
&mut self,
id: &EngineId,
) -> Result<&mut Self, RuntimeConfigError>
pub fn remove_engine( &mut self, id: &EngineId, ) -> Result<&mut Self, RuntimeConfigError>
Remove an existing engine in this reconfiguration.
§Errors
Returns RuntimeConfigError::MissingEngine if the engine ID is absent.
Sourcepub fn install_extension_module(
&mut self,
value: Arc<dyn ExtensionModule>,
) -> Result<&mut Self, RuntimeConfigError>
pub fn install_extension_module( &mut self, value: Arc<dyn ExtensionModule>, ) -> Result<&mut Self, RuntimeConfigError>
Install an extension module in this reconfiguration.
§Errors
Returns RuntimeConfigError::ExtensionModule when module configuration
fails or a distinct module already uses the same module ID.
Sourcepub fn register_transfer_provider(
&mut self,
source: TransferEndpoint,
destination: TransferEndpoint,
provider: Arc<dyn TransferProvider>,
) -> Result<&mut Self, RuntimeConfigError>
pub fn register_transfer_provider( &mut self, source: TransferEndpoint, destination: TransferEndpoint, provider: Arc<dyn TransferProvider>, ) -> Result<&mut Self, RuntimeConfigError>
Register a transfer provider in this reconfiguration by endpoint pair.
§Examples
use std::sync::Arc;
use tenferro_runtime::{
assemble_preparation_only_engine_registration, CoreCapabilityBundle, EngineId,
EngineRegistration, EngineRegistrationMetadata, Error, ExecutionContextIdentity,
HardwareClassId, PreparationOnlyEngineRegistrationConfig, ProviderDeviceIdentity,
ProviderId, Runtime, StorageClass, TransferEndpoint, TransferProvider, TransferRequest,
};
#[derive(Debug)]
struct ExampleProvider;
impl TransferProvider for ExampleProvider {
fn transfer_blocking(
&self,
_request: TransferRequest<'_>,
) -> tenferro_runtime::Result<tenferro_tensor::Tensor> {
Err(Error::Internal("the example does not execute a transfer".into()))
}
}
fn registration(
id: &str,
storage: &StorageClass,
) -> Result<EngineRegistration, tenferro_runtime::RuntimeConfigError> {
let metadata = EngineRegistrationMetadata::new(
EngineId::new(id)?,
ProviderDeviceIdentity::new(
ProviderId::new("example.provider")?,
format!("engine:{id}"),
)?,
HardwareClassId::new("example.hardware")?,
Arc::from([storage.clone()]),
storage.clone(),
CoreCapabilityBundle::default(),
);
Ok(assemble_preparation_only_engine_registration(
PreparationOnlyEngineRegistrationConfig::new(
metadata,
ExecutionContextIdentity::of::<()>(),
),
)?)
}
let storage = StorageClass::new("example.storage.host")?;
let source_id = EngineId::new("example.engine.source")?;
let destination_id = EngineId::new("example.engine.destination")?;
let mut builder = Runtime::builder();
builder.register_engine(registration(source_id.as_str(), &storage)?)?;
builder.register_engine(registration(destination_id.as_str(), &storage)?)?;
let runtime = builder.build()?;
runtime.reconfigure(|edit| {
edit.register_transfer_provider(
TransferEndpoint::new(source_id, storage.clone()),
TransferEndpoint::new(destination_id, storage),
Arc::new(ExampleProvider),
)?;
Ok(())
})?;
assert_eq!(runtime.snapshot()?.transfer_provider_count(), 1);§Errors
Returns RuntimeConfigError::ConflictingRegistration if a different
provider is already registered for the same endpoint pair. The complete
endpoint pair is validated before this reconfiguration is published.
Sourcepub fn remove_transfer_provider(
&mut self,
source: TransferEndpoint,
destination: TransferEndpoint,
) -> Result<&mut Self, RuntimeConfigError>
pub fn remove_transfer_provider( &mut self, source: TransferEndpoint, destination: TransferEndpoint, ) -> Result<&mut Self, RuntimeConfigError>
Remove the transfer provider for an endpoint pair in this reconfiguration.
§Errors
Returns RuntimeConfigError::MissingTransferProvider when the exact
endpoint pair is not registered.
Sourcepub fn replace_extension_module(
&mut self,
value: Arc<dyn ExtensionModule>,
) -> Result<&mut Self, RuntimeConfigError>
pub fn replace_extension_module( &mut self, value: Arc<dyn ExtensionModule>, ) -> Result<&mut Self, RuntimeConfigError>
Replace an extension module in this reconfiguration, installing when absent.
§Errors
Returns RuntimeConfigError::ExtensionModule when module configuration
fails.
Sourcepub fn remove_extension_module(
&mut self,
id: &ExtensionModuleId,
) -> Result<&mut Self, RuntimeConfigError>
pub fn remove_extension_module( &mut self, id: &ExtensionModuleId, ) -> Result<&mut Self, RuntimeConfigError>
Remove an extension module if present.
§Errors
This method currently has no failing absent-module path; it returns
RuntimeConfigError only for future validated module removal failures.
Trait Implementations§
Auto Trait Implementations§
impl<'a> Freeze for RuntimeReconfiguration<'a>
impl<'a> !RefUnwindSafe for RuntimeReconfiguration<'a>
impl<'a> Send for RuntimeReconfiguration<'a>
impl<'a> Sync for RuntimeReconfiguration<'a>
impl<'a> Unpin for RuntimeReconfiguration<'a>
impl<'a> UnsafeUnpin for RuntimeReconfiguration<'a>
impl<'a> !UnwindSafe for RuntimeReconfiguration<'a>
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
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 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>
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