pub trait ResourceTransactionDriver: Send {
type Buffer: Send + Sync + 'static;
type Runtime: DeviceRuntime<Buffer = Self::Buffer>;
Show 13 methods
// Required methods
fn runtime(&self) -> &Arc<Self::Runtime> ⓘ;
fn device_id(&self) -> &DeviceId;
fn device_runtime_implementation_fingerprint(&self) -> &str;
fn device_capacity_bytes(&self) -> u64;
fn reserve_resource(
&mut self,
context: &ResourceTransactionContext<'_, Self::Runtime>,
reservation: &ResourceReservation,
) -> Result<(), ResourceDriverFailure>;
fn commit_resource<'commit>(
&mut self,
context: &'commit ResourceTransactionContext<'_, Self::Runtime>,
reservation: &ResourceReservation,
) -> Result<DeviceAllocationReceipt<'commit>, ResourceDriverFailure>;
fn compensate_reserve_resource(
&mut self,
context: &ResourceTransactionContext<'_, Self::Runtime>,
reservation: &ResourceReservation,
) -> Result<(), ResourceDriverFailure>;
fn compensate_commit_resource(
&mut self,
context: &ResourceTransactionContext<'_, Self::Runtime>,
reservation: &ResourceReservation,
buffer: &Self::Buffer,
) -> Result<(), ResourceDriverFailure>;
fn rollback_resource(
&mut self,
context: &ResourceTransactionContext<'_, Self::Runtime>,
reservation: &ResourceReservation,
) -> Result<(), ResourceDriverFailure>;
fn release_resource(
&mut self,
context: &ResourceTransactionContext<'_, Self::Runtime>,
reservation: &ResourceReservation,
buffer: &Self::Buffer,
) -> Result<(), ResourceDriverFailure>;
fn reconcile_commit_outcome(
&mut self,
context: &ResourceTransactionContext<'_, Self::Runtime>,
expected: &ResourceReservation,
actual: ResourceCommitView<'_, Self::Buffer>,
) -> Result<(), ResourceDriverFailure>;
fn quarantine_transaction(
&mut self,
context: &ResourceTransactionContext<'_, Self::Runtime>,
ownership: ResourcePoolOwnership<Self::Runtime>,
) -> Result<(), ResourceOwnershipTransferFailure<Self::Runtime>>;
fn abandon_transaction(
&mut self,
ownership: ResourcePoolOwnership<Self::Runtime>,
);
}Expand description
Backend adapter for one resource at a time. Core owns action ordering, actual state, all buffers, receipts, and recovery progress. Methods must be idempotent for the full identity/action/resource/generation key.
Required Associated Types§
Required Methods§
fn runtime(&self) -> &Arc<Self::Runtime> ⓘ
fn device_id(&self) -> &DeviceId
fn device_runtime_implementation_fingerprint(&self) -> &str
fn device_capacity_bytes(&self) -> u64
fn reserve_resource( &mut self, context: &ResourceTransactionContext<'_, Self::Runtime>, reservation: &ResourceReservation, ) -> Result<(), ResourceDriverFailure>
fn commit_resource<'commit>( &mut self, context: &'commit ResourceTransactionContext<'_, Self::Runtime>, reservation: &ResourceReservation, ) -> Result<DeviceAllocationReceipt<'commit>, ResourceDriverFailure>
fn compensate_reserve_resource( &mut self, context: &ResourceTransactionContext<'_, Self::Runtime>, reservation: &ResourceReservation, ) -> Result<(), ResourceDriverFailure>
fn compensate_commit_resource( &mut self, context: &ResourceTransactionContext<'_, Self::Runtime>, reservation: &ResourceReservation, buffer: &Self::Buffer, ) -> Result<(), ResourceDriverFailure>
fn rollback_resource( &mut self, context: &ResourceTransactionContext<'_, Self::Runtime>, reservation: &ResourceReservation, ) -> Result<(), ResourceDriverFailure>
fn release_resource( &mut self, context: &ResourceTransactionContext<'_, Self::Runtime>, reservation: &ResourceReservation, buffer: &Self::Buffer, ) -> Result<(), ResourceDriverFailure>
fn reconcile_commit_outcome( &mut self, context: &ResourceTransactionContext<'_, Self::Runtime>, expected: &ResourceReservation, actual: ResourceCommitView<'_, Self::Buffer>, ) -> Result<(), ResourceDriverFailure>
fn quarantine_transaction( &mut self, context: &ResourceTransactionContext<'_, Self::Runtime>, ownership: ResourcePoolOwnership<Self::Runtime>, ) -> Result<(), ResourceOwnershipTransferFailure<Self::Runtime>>
fn abandon_transaction( &mut self, ownership: ResourcePoolOwnership<Self::Runtime>, )
Dyn Compatibility§
This trait is dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".