Struct mz_aws_util::s3_uploader::S3MultiPartUploader

source ·
pub struct S3MultiPartUploader {
    client: Client,
    config: S3MultiPartUploaderConfig,
    bucket: String,
    key: String,
    upload_id: String,
    part_count: i32,
    total_bytes_uploaded: u64,
    buffer: BytesMut,
    upload_handles: Vec<JoinHandle<Result<(Option<String>, i32), S3MultiPartUploadError>>>,
}
Expand description

A multi part uploader which can upload a single object across multiple parts and keeps track of state to eventually finish the upload process. The caller does not need to know the final number of parts beforehand.

The caller should get an instance by calling S3MultiPartUploader::try_new first. Each part can be added by calling add_chunk, and can be called one or more times and eventually finish the multi part upload by calling finish method.

Fields§

§client: Client§config: S3MultiPartUploaderConfig§bucket: String§key: String§upload_id: String§part_count: i32§total_bytes_uploaded: u64§buffer: BytesMut§upload_handles: Vec<JoinHandle<Result<(Option<String>, i32), S3MultiPartUploadError>>>

Implementations§

source§

impl S3MultiPartUploader

source

pub async fn try_new( sdk_config: &SdkConfig, bucket: String, key: String, config: S3MultiPartUploaderConfig, ) -> Result<S3MultiPartUploader, S3MultiPartUploadError>

Creates a an instance of S3MultiPartUploader for the given bucket and path. This starts the multi part upload by making a create_multipart_upload call, and initializes all the internal state required to track the ongoing upload.

source

pub fn buffer_chunk( &mut self, data: &[u8], ) -> Result<(), S3MultiPartUploadError>

Adds the data to the internal buffer and flushes the buffer if it is more than the part threshold defined in S3MultiPartUploaderConfig. Returns an UploadExceedsMaxFileLimit error if the upload will exceed the configured file_size_limit, unless no data has been added yet. In which case, it will try to do an upload if the data size is under part_size_limit * 10000.

source

pub async fn finish(self) -> Result<CompletedUpload, S3MultiPartUploadError>

Method to finish the multi part upload. If the buffer is not empty, it flushes the buffer first and then makes a call to complete_multipart_upload. Returns the number of parts and number of bytes uploaded.

source

fn buffer_size(&self) -> u64

source

fn remaining_bytes_limit(&self) -> u64

Internal method, returns the amount of bytes which can still be added to the multi-part upload. without exceeding file_size_limit.

source

pub fn added_bytes(&self) -> u64

Internal method, returns the number of bytes processed till now.

source

fn flush_chunks(&mut self) -> Result<(), S3MultiPartUploadError>

Internal method to continuously flush and upload part from the buffer till it is under the configured part_size_limit.

source

fn upload_part_internal( &mut self, data: Bytes, ) -> Result<(), S3MultiPartUploadError>

Internal method which actually uploads a single part and updates state.

Trait Implementations§

source§

impl Debug for S3MultiPartUploader

source§

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

Formats the value using the given formatter. Read more

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, U> CastInto<U> for T
where U: CastFrom<T>,

source§

fn cast_into(self) -> U

Performs the cast.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T> FutureExt for T

source§

fn with_context(self, otel_cx: Context) -> WithContext<Self>

Attaches the provided Context to this type, returning a WithContext wrapper. Read more
source§

fn with_current_context(self) -> WithContext<Self>

Attaches the current Context to this type, returning a WithContext wrapper. Read more
source§

impl<T> Instrument for T

source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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> IntoRequest<T> for T

source§

fn into_request(self) -> Request<T>

Wrap the input message T in a tonic::Request
source§

impl<Unshared, Shared> IntoShared<Shared> for Unshared
where Shared: FromUnshared<Unshared>,

source§

fn into_shared(self) -> Shared

Creates a shared type from an unshared type.
source§

impl<T> Pointable for T

source§

const ALIGN: usize = _

The alignment of pointer.
§

type Init = T

The type for initializers.
source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
source§

impl<T> Same for T

§

type Output = T

Should always be Self
source§

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

§

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

§

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.
source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

source§

fn vzip(self) -> V

source§

impl<T> WithSubscriber for T

source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more