Skip to main content

UploadSessionLifecycle

Enum UploadSessionLifecycle 

Source
pub enum UploadSessionLifecycle {
    Open {
        expires_at_ms: u64,
        staged_content: Option<ContentRef>,
    },
    Completed {
        completed_at_ms: u64,
        content_ref: ContentRef,
    },
    Aborted {
        aborted_at_ms: u64,
    },
}
Expand description

Lifecycle of a durable upload session: one live state and two terminal ones, with no way back.

A session opens with a lease and either completes or is aborted. The compare-and-swap that makes one of those two land is the serialization point for the whole upload — provider state follows the durable transition, never the other way around — so whichever transition wins is simply what happened, and the loser reports a terminal error rather than undoing anything. Nothing returns a session to open: a client that wants another try begins another session, which mints its own content identity.

Variants§

§

Open

The one state that may stage bytes and complete. Live until its lease passes, after which garbage collection aborts it.

Fields

§expires_at_ms: u64

Unix-millisecond instant after which the session is abandoned. The record carries it so no session transition depends on an object’s provider timestamp.

§staged_content: Option<ContentRef>

Content this session has already written and proven, or None before any bytes have passed validation.

Only a service-proxied session stages: the other transports write past this server, so what they wrote is established at completion. Staged content lives here rather than beside the state because it is the one thing about an open session that changes, and because a terminal session has no use for it — a completed one names its content once, below.

§

Completed

Terminal: the content is durable and verified. This is the only state a receipt may be minted from, and the content reference it carries is what every re-mint and idempotent completion retry answers with.

Fields

§completed_at_ms: u64

Unix-millisecond stamp written by the completing compare-and-swap, and the only input to when the content may be reclaimed.

§content_ref: ContentRef

Verified immutable content this session settled on, and the one place a completed session’s reference exists.

§

Aborted

Terminal: the session will never select content. Its content identity was never published — a receipt exists only for a completed session — so the object it named belongs to nobody and is deleted.

Fields

§aborted_at_ms: u64

Unix-millisecond stamp written by the aborting compare-and-swap, and the only input to when the record may be deleted.

Trait Implementations§

Source§

impl Clone for UploadSessionLifecycle

Source§

fn clone(&self) -> UploadSessionLifecycle

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for UploadSessionLifecycle

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<'de> Deserialize<'de> for UploadSessionLifecycle

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl Display for UploadSessionLifecycle

Source§

fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Eq for UploadSessionLifecycle

Source§

impl PartialEq for UploadSessionLifecycle

Source§

fn eq(&self, other: &UploadSessionLifecycle) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl Serialize for UploadSessionLifecycle

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
Source§

impl StructuralPartialEq for UploadSessionLifecycle

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T> ToString for T
where T: Display + ?Sized,

Source§

fn to_string(&self) -> String

Converts the given value to a String. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.