Skip to main content

UploadSessionTransport

Enum UploadSessionTransport 

Source
pub enum UploadSessionTransport {
    ServiceProxied {},
    DirectPut {
        promised_content: ContentRef,
    },
    DirectMultipart {
        provider_upload_id: String,
        part_size_bytes: NonZeroU64,
    },
}
Expand description

How one upload session moves its bytes into object storage, and everything that choice settles before any byte moves.

A session’s transport is fixed when it opens and never changes. Each variant carries exactly what its own path needs, so a session cannot hold a provider upload it will never use, or a promise it was never given.

Variants§

§

ServiceProxied

The service receives the bytes and writes the content object itself, so it learns size and digest from the bytes as they pass and has nothing to record here.

The empty braces are load-bearing: serde lets a unit variant of a tagged enum swallow whatever else the object carried, so spelling this as ServiceProxied would read a record holding a provider upload as a proxied session and drop the handle that cleans it up. A variant with no fields refuses it as the corruption it is.

§

DirectPut

The client writes the whole object through one presigned request.

Fields

§promised_content: ContentRef

The reference that signed write is minted for.

A direct-put client declares its byte length and SHA-256 before the write is authorized, because both are signed into the request and the provider refuses any body that does not match. Completion reads the stored object back against this same reference rather than believing it.

§

DirectMultipart

The client writes the object in parts through presigned part uploads, and the provider assembles it.

There is deliberately no content promise here. A session that had to declare its length and digest up front would make a one-pass uploader read its payload twice, and a client reading from a pipe could not start at all — so a multipart upload claims what it wrote at completion, which is where it was always verified rather than believed. This variant carrying no reference is what makes an up-front multipart claim unrepresentable.

Fields

§provider_upload_id: String

The provider-side upload the parts assemble through, and the only provider handle LoonFS keeps: parts are the client’s bookkeeping, exactly as they are in the provider’s own API, so there is no durable record per part.

§part_size_bytes: NonZeroU64

Byte length of every part except the last, settled at begin.

A session resumed after a lost begin response reads its geometry from here rather than being told a second, possibly different, one. Zero is not a geometry, so it is not representable.

Trait Implementations§

Source§

impl Clone for UploadSessionTransport

Source§

fn clone(&self) -> UploadSessionTransport

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 UploadSessionTransport

Source§

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

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

impl<'de> Deserialize<'de> for UploadSessionTransport

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 Eq for UploadSessionTransport

Source§

impl PartialEq for UploadSessionTransport

Source§

fn eq(&self, other: &UploadSessionTransport) -> 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 UploadSessionTransport

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 UploadSessionTransport

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