pub struct StorePromotionExecutor<S, D> { /* private fields */ }Expand description
Canonical zero-copy-capable executor between two configured object stores.
The executor binds opaque plan locations to exact store handles. It reads
through the source’s authenticated object contract and moves the returned
Bytes directly into idempotent destination admission. It never discovers
objects, chooses infrastructure, or retains a second body.
Implementations§
Source§impl<S, D> StorePromotionExecutor<S, D>
impl<S, D> StorePromotionExecutor<S, D>
Sourcepub fn new(
source_location_id: StorageLocationId,
source: S,
destination_location_id: StorageLocationId,
destination: D,
) -> Result<Self, StorePromotionExecutorError>
pub fn new( source_location_id: StorageLocationId, source: S, destination_location_id: StorageLocationId, destination: D, ) -> Result<Self, StorePromotionExecutorError>
Binds two distinct opaque locations to their exact store handles.
§Errors
Rejects a self-copy configuration before either store can be accessed.
Sourcepub const fn destination(&self) -> &D
pub const fn destination(&self) -> &D
Returns the exact configured destination handle.
Trait Implementations§
Source§impl<S: AsyncObjectStore, D: AsyncObjectStore> PromotionExecutor for StorePromotionExecutor<S, D>
impl<S: AsyncObjectStore, D: AsyncObjectStore> PromotionExecutor for StorePromotionExecutor<S, D>
Source§async fn promote(
&self,
plan: &PromotionPlan,
budget: WorkBudget,
cancellation: &CancellationToken,
) -> ObjectResult<()>
async fn promote( &self, plan: &PromotionPlan, budget: WorkBudget, cancellation: &CancellationToken, ) -> ObjectResult<()>
Copies, authenticates, and durably admits the exact object at the plan’s
destination, retaining the operation identity for idempotent retry.
Auto Trait Implementations§
impl<S, D> Freeze for StorePromotionExecutor<S, D>
impl<S, D> RefUnwindSafe for StorePromotionExecutor<S, D>where
S: RefUnwindSafe,
D: RefUnwindSafe,
impl<S, D> Send for StorePromotionExecutor<S, D>
impl<S, D> Sync for StorePromotionExecutor<S, D>
impl<S, D> Unpin for StorePromotionExecutor<S, D>
impl<S, D> UnsafeUnpin for StorePromotionExecutor<S, D>where
S: UnsafeUnpin,
D: UnsafeUnpin,
impl<S, D> UnwindSafe for StorePromotionExecutor<S, D>where
S: UnwindSafe,
D: UnwindSafe,
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
Mutably borrows from an owned value. Read more
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
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>
Wrap the input message
T in a tonic::Request