Skip to main content

ResourceTransactionDriver

Trait ResourceTransactionDriver 

Source
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§

Source

type Buffer: Send + Sync + 'static

Source

type Runtime: DeviceRuntime<Buffer = Self::Buffer>

Required Methods§

Source

fn runtime(&self) -> &Arc<Self::Runtime>

Source

fn device_id(&self) -> &DeviceId

Source

fn device_runtime_implementation_fingerprint(&self) -> &str

Source

fn device_capacity_bytes(&self) -> u64

Source

fn reserve_resource( &mut self, context: &ResourceTransactionContext<'_, Self::Runtime>, reservation: &ResourceReservation, ) -> Result<(), ResourceDriverFailure>

Source

fn commit_resource<'commit>( &mut self, context: &'commit ResourceTransactionContext<'_, Self::Runtime>, reservation: &ResourceReservation, ) -> Result<DeviceAllocationReceipt<'commit>, ResourceDriverFailure>

Source

fn compensate_reserve_resource( &mut self, context: &ResourceTransactionContext<'_, Self::Runtime>, reservation: &ResourceReservation, ) -> Result<(), ResourceDriverFailure>

Source

fn compensate_commit_resource( &mut self, context: &ResourceTransactionContext<'_, Self::Runtime>, reservation: &ResourceReservation, buffer: &Self::Buffer, ) -> Result<(), ResourceDriverFailure>

Source

fn rollback_resource( &mut self, context: &ResourceTransactionContext<'_, Self::Runtime>, reservation: &ResourceReservation, ) -> Result<(), ResourceDriverFailure>

Source

fn release_resource( &mut self, context: &ResourceTransactionContext<'_, Self::Runtime>, reservation: &ResourceReservation, buffer: &Self::Buffer, ) -> Result<(), ResourceDriverFailure>

Source

fn reconcile_commit_outcome( &mut self, context: &ResourceTransactionContext<'_, Self::Runtime>, expected: &ResourceReservation, actual: ResourceCommitView<'_, Self::Buffer>, ) -> Result<(), ResourceDriverFailure>

Source

fn quarantine_transaction( &mut self, context: &ResourceTransactionContext<'_, Self::Runtime>, ownership: ResourcePoolOwnership<Self::Runtime>, ) -> Result<(), ResourceOwnershipTransferFailure<Self::Runtime>>

Source

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".

Implementors§