Trait qiniu_sdk::prelude::MultiPartsUploader
source · pub trait MultiPartsUploader: Sealed + MultiPartsUploaderWithCallbacks + Clone + Send + Sync + Debug {
type HashAlgorithm: 'static + Digest + Send;
type InitializedParts: 'static + InitializedParts;
type UploadedPart: UploadedPart;
type AsyncInitializedParts: 'static + InitializedParts;
type AsyncUploadedPart: UploadedPart;
fn new<R>(upload_manager: UploadManager, resumable_recorder: R) -> Self
where
R: 'static + ResumableRecorder<HashAlgorithm = Self::HashAlgorithm>;
fn upload_manager(&self) -> &UploadManager;
fn initialize_parts<D>(
&self,
source: D,
params: ObjectParams
) -> Result<Self::InitializedParts, Error>
where
D: 'static + DataSource<Self::HashAlgorithm>;
fn upload_part(
&self,
initialized: &Self::InitializedParts,
data_partitioner_provider: &dyn DataPartitionProvider
) -> Result<Option<Self::UploadedPart>, Error>;
fn complete_parts(
&self,
initialized: &Self::InitializedParts,
parts: &[Self::UploadedPart]
) -> Result<Value, Error>;
fn reinitialize_parts(
&self,
initialized: &mut Self::InitializedParts,
options: ReinitializeOptions
) -> Result<(), Error>;
fn try_to_resume_parts<D>(
&self,
source: D,
params: ObjectParams
) -> Option<Self::InitializedParts>
where
D: 'static + DataSource<Self::HashAlgorithm>;
fn async_initialize_parts<D>(
&self,
source: D,
params: ObjectParams
) -> Pin<Box<dyn Future<Output = Result<Self::AsyncInitializedParts, Error>> + Send, Global>>
where
D: 'static + AsyncDataSource<Self::HashAlgorithm>;
fn async_upload_part(
&'r self,
initialized: &'r Self::AsyncInitializedParts,
data_partitioner_provider: &'r (dyn DataPartitionProvider + 'r)
) -> Pin<Box<dyn Future<Output = Result<Option<Self::AsyncUploadedPart>, Error>> + Send + 'r, Global>>;
fn async_complete_parts(
&'r self,
initialized: &'r Self::AsyncInitializedParts,
parts: &'r [Self::AsyncUploadedPart]
) -> Pin<Box<dyn Future<Output = Result<Value, Error>> + Send + 'r, Global>>;
fn async_reinitialize_parts(
&'r self,
initialized: &'r mut Self::AsyncInitializedParts,
options: ReinitializeOptions
) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'r, Global>>;
fn try_to_async_resume_parts<D>(
&self,
source: D,
params: ObjectParams
) -> Pin<Box<dyn Future<Output = Option<Self::AsyncInitializedParts>> + Send, Global>>
where
D: 'static + AsyncDataSource<Self::HashAlgorithm>;
}
Expand description
分片上传器接口
将数据源通过多个分片的方式逐一上传,适合数据量较大的数据源,可以提供断点恢复的能力。
Required Associated Types
sourcetype HashAlgorithm: 'static + Digest + Send
type HashAlgorithm: 'static + Digest + Send
数据源 KEY 的哈希算法
sourcetype InitializedParts: 'static + InitializedParts
type InitializedParts: 'static + InitializedParts
初始化的分片信息
sourcetype UploadedPart: UploadedPart
type UploadedPart: UploadedPart
已经上传的分片信息
sourcetype AsyncInitializedParts: 'static + InitializedParts
type AsyncInitializedParts: 'static + InitializedParts
初始化的异步分片信息
sourcetype AsyncUploadedPart: UploadedPart
type AsyncUploadedPart: UploadedPart
已经上传的异步分片信息
Required Methods
sourcefn new<R>(upload_manager: UploadManager, resumable_recorder: R) -> Selfwhere
R: 'static + ResumableRecorder<HashAlgorithm = Self::HashAlgorithm>,
fn new<R>(upload_manager: UploadManager, resumable_recorder: R) -> Selfwhere
R: 'static + ResumableRecorder<HashAlgorithm = Self::HashAlgorithm>,
创建分片上传器
sourcefn upload_manager(&self) -> &UploadManager
fn upload_manager(&self) -> &UploadManager
获取初始化使用的上传管理器
sourcefn initialize_parts<D>(
&self,
source: D,
params: ObjectParams
) -> Result<Self::InitializedParts, Error>where
D: 'static + DataSource<Self::HashAlgorithm>,
fn initialize_parts<D>(
&self,
source: D,
params: ObjectParams
) -> Result<Self::InitializedParts, Error>where
D: 'static + DataSource<Self::HashAlgorithm>,
sourcefn upload_part(
&self,
initialized: &Self::InitializedParts,
data_partitioner_provider: &dyn DataPartitionProvider
) -> Result<Option<Self::UploadedPart>, Error>
fn upload_part(
&self,
initialized: &Self::InitializedParts,
data_partitioner_provider: &dyn DataPartitionProvider
) -> Result<Option<Self::UploadedPart>, Error>
sourcefn complete_parts(
&self,
initialized: &Self::InitializedParts,
parts: &[Self::UploadedPart]
) -> Result<Value, Error>
fn complete_parts(
&self,
initialized: &Self::InitializedParts,
parts: &[Self::UploadedPart]
) -> Result<Value, Error>
sourcefn reinitialize_parts(
&self,
initialized: &mut Self::InitializedParts,
options: ReinitializeOptions
) -> Result<(), Error>
fn reinitialize_parts(
&self,
initialized: &mut Self::InitializedParts,
options: ReinitializeOptions
) -> Result<(), Error>
重新初始化分片信息
该步骤负责将先前已经初始化过的分片信息全部重置,清空断点续传记录器中的记录,之后从头上传整个文件
该方法的异步版本为 Self::async_reinitialize_parts
。
sourcefn try_to_resume_parts<D>(
&self,
source: D,
params: ObjectParams
) -> Option<Self::InitializedParts>where
D: 'static + DataSource<Self::HashAlgorithm>,
fn try_to_resume_parts<D>(
&self,
source: D,
params: ObjectParams
) -> Option<Self::InitializedParts>where
D: 'static + DataSource<Self::HashAlgorithm>,
尝试恢复记录
如果提供了有效的断点续传记录器,该方法可以尝试在找到记录,如果找不到记录,或记录无法读取,则返回 None
。
该方法的异步版本为 [Self::try_to_async_resume_records
]。
sourcefn async_initialize_parts<D>(
&self,
source: D,
params: ObjectParams
) -> Pin<Box<dyn Future<Output = Result<Self::AsyncInitializedParts, Error>> + Send, Global>>where
D: 'static + AsyncDataSource<Self::HashAlgorithm>,
fn async_initialize_parts<D>(
&self,
source: D,
params: ObjectParams
) -> Pin<Box<dyn Future<Output = Result<Self::AsyncInitializedParts, Error>> + Send, Global>>where
D: 'static + AsyncDataSource<Self::HashAlgorithm>,
异步初始化分片信息
该步骤只负责初始化分片,但不实际上传数据,如果提供了有效的断点续传记录器,则可以尝试在这一步找到记录。
sourcefn async_upload_part(
&'r self,
initialized: &'r Self::AsyncInitializedParts,
data_partitioner_provider: &'r (dyn DataPartitionProvider + 'r)
) -> Pin<Box<dyn Future<Output = Result<Option<Self::AsyncUploadedPart>, Error>> + Send + 'r, Global>>
fn async_upload_part(
&'r self,
initialized: &'r Self::AsyncInitializedParts,
data_partitioner_provider: &'r (dyn DataPartitionProvider + 'r)
) -> Pin<Box<dyn Future<Output = Result<Option<Self::AsyncUploadedPart>, Error>> + Send + 'r, Global>>
异步上传分片
实际上传的分片大小由提供的分片大小提供者获取。
如果返回 [Ok(None)
] 则表示已经没有更多分片可以上传。
sourcefn async_complete_parts(
&'r self,
initialized: &'r Self::AsyncInitializedParts,
parts: &'r [Self::AsyncUploadedPart]
) -> Pin<Box<dyn Future<Output = Result<Value, Error>> + Send + 'r, Global>>
fn async_complete_parts(
&'r self,
initialized: &'r Self::AsyncInitializedParts,
parts: &'r [Self::AsyncUploadedPart]
) -> Pin<Box<dyn Future<Output = Result<Value, Error>> + Send + 'r, Global>>
异步完成分片上传
在这步成功返回后,对象即可被读取。
sourcefn async_reinitialize_parts(
&'r self,
initialized: &'r mut Self::AsyncInitializedParts,
options: ReinitializeOptions
) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'r, Global>>
fn async_reinitialize_parts(
&'r self,
initialized: &'r mut Self::AsyncInitializedParts,
options: ReinitializeOptions
) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'r, Global>>
异步重新初始化分片信息
该步骤负责将先前已经初始化过的分片信息全部重置,清空断点续传记录器中的记录,之后从头上传整个文件
sourcefn try_to_async_resume_parts<D>(
&self,
source: D,
params: ObjectParams
) -> Pin<Box<dyn Future<Output = Option<Self::AsyncInitializedParts>> + Send, Global>>where
D: 'static + AsyncDataSource<Self::HashAlgorithm>,
fn try_to_async_resume_parts<D>(
&self,
source: D,
params: ObjectParams
) -> Pin<Box<dyn Future<Output = Option<Self::AsyncInitializedParts>> + Send, Global>>where
D: 'static + AsyncDataSource<Self::HashAlgorithm>,
异步尝试恢复记录
如果提供了有效的断点续传记录器,该方法可以尝试在找到记录,如果找不到记录,或记录无法读取,则返回 None
。