You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@opendal.apache.org by xu...@apache.org on 2024/01/09 07:13:58 UTC
(incubator-opendal) branch afit created (now 230dda4fa6)
This is an automated email from the ASF dual-hosted git repository.
xuanwo pushed a change to branch afit
in repository https://gitbox.apache.org/repos/asf/incubator-opendal.git
at 230dda4fa6 Try AFIT
This branch includes the following new commits:
new 230dda4fa6 Try AFIT
The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
(incubator-opendal) 01/01: Try AFIT
Posted by xu...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
xuanwo pushed a commit to branch afit
in repository https://gitbox.apache.org/repos/asf/incubator-opendal.git
commit 230dda4fa69aac47c214b6b30430f94197e649bf
Author: Xuanwo <gi...@xuanwo.io>
AuthorDate: Tue Jan 9 15:13:49 2024 +0800
Try AFIT
Signed-off-by: Xuanwo <gi...@xuanwo.io>
---
core/src/raw/oio/write/multipart_upload_write.rs | 44 +++++++++++++++++++-----
core/src/services/b2/writer.rs | 2 --
core/src/services/cos/writer.rs | 1 -
core/src/services/obs/writer.rs | 1 -
core/src/services/oss/writer.rs | 1 -
core/src/services/s3/writer.rs | 3 --
core/src/services/upyun/writer.rs | 2 --
7 files changed, 35 insertions(+), 19 deletions(-)
diff --git a/core/src/raw/oio/write/multipart_upload_write.rs b/core/src/raw/oio/write/multipart_upload_write.rs
index 66105b4d4a..729bdb2c32 100644
--- a/core/src/raw/oio/write/multipart_upload_write.rs
+++ b/core/src/raw/oio/write/multipart_upload_write.rs
@@ -21,7 +21,6 @@ use std::task::ready;
use std::task::Context;
use std::task::Poll;
-use async_trait::async_trait;
use futures::Future;
use futures::FutureExt;
use futures::StreamExt;
@@ -51,15 +50,16 @@ use crate::*;
/// ```
///
/// We will use `write_once` instead of starting a new multipart upload.
-#[cfg_attr(not(target_arch = "wasm32"), async_trait)]
-#[cfg_attr(target_arch = "wasm32", async_trait(?Send))]
pub trait MultipartUploadWrite: Send + Sync + Unpin + 'static {
/// write_once is used to write the data to underlying storage at once.
///
/// MultipartUploadWriter will call this API when:
///
/// - All the data has been written to the buffer and we can perform the upload at once.
- async fn write_once(&self, size: u64, body: AsyncBody) -> Result<()>;
+ #[cfg(not(target_arch = "wasm32"))]
+ fn write_once(&self, size: u64, body: AsyncBody) -> impl Future<Output = Result<()>> + Send;
+ #[cfg(target_arch = "wasm32")]
+ fn write_once(&self, size: u64, body: AsyncBody) -> impl Future<Output = Result<()>>;
/// initiate_part will call start a multipart upload and return the upload id.
///
@@ -68,7 +68,10 @@ pub trait MultipartUploadWrite: Send + Sync + Unpin + 'static {
/// - the total size of data is unknown.
/// - the total size of data is known, but the size of current write
/// is less then the total size.
- async fn initiate_part(&self) -> Result<String>;
+ #[cfg(not(target_arch = "wasm32"))]
+ fn initiate_part(&self) -> impl Future<Output = Result<String>> + Send;
+ #[cfg(target_arch = "wasm32")]
+ fn initiate_part(&self) -> impl Future<Output = Result<String>>;
/// write_part will write a part of the data and returns the result
/// [`MultipartUploadPart`].
@@ -77,20 +80,43 @@ pub trait MultipartUploadWrite: Send + Sync + Unpin + 'static {
/// order.
///
/// - part_number is the index of the part, starting from 0.
- async fn write_part(
+ #[cfg(not(target_arch = "wasm32"))]
+ fn write_part(
&self,
upload_id: &str,
part_number: usize,
size: u64,
body: AsyncBody,
- ) -> Result<MultipartUploadPart>;
+ ) -> impl Future<Output = Result<MultipartUploadPart>> + Send;
+ #[cfg(target_arch = "wasm32")]
+ fn write_part(
+ &self,
+ upload_id: &str,
+ part_number: usize,
+ size: u64,
+ body: AsyncBody,
+ ) -> impl Future<Output = Result<MultipartUploadPart>>;
/// complete_part will complete the multipart upload to build the final
/// file.
- async fn complete_part(&self, upload_id: &str, parts: &[MultipartUploadPart]) -> Result<()>;
+ #[cfg(not(target_arch = "wasm32"))]
+ fn complete_part(
+ &self,
+ upload_id: &str,
+ parts: &[MultipartUploadPart],
+ ) -> impl Future<Output = Result<()>> + Send;
+ #[cfg(target_arch = "wasm32")]
+ fn complete_part(
+ &self,
+ upload_id: &str,
+ parts: &[MultipartUploadPart],
+ ) -> impl Future<Output = Result<()>>;
/// abort_part will cancel the multipart upload and purge all data.
- async fn abort_part(&self, upload_id: &str) -> Result<()>;
+ #[cfg(not(target_arch = "wasm32"))]
+ fn abort_part(&self, upload_id: &str) -> impl Future<Output = Result<()>> + Send;
+ #[cfg(target_arch = "wasm32")]
+ fn abort_part(&self, upload_id: &str) -> impl Future<Output = Result<()>>;
}
/// The result of [`MultipartUploadWrite::write_part`].
diff --git a/core/src/services/b2/writer.rs b/core/src/services/b2/writer.rs
index 59f4367fb5..6dbca97607 100644
--- a/core/src/services/b2/writer.rs
+++ b/core/src/services/b2/writer.rs
@@ -17,7 +17,6 @@
use std::sync::Arc;
-use async_trait::async_trait;
use http::StatusCode;
use super::core::B2Core;
@@ -46,7 +45,6 @@ impl B2Writer {
}
}
-#[async_trait]
impl oio::MultipartUploadWrite for B2Writer {
async fn write_once(&self, size: u64, body: AsyncBody) -> Result<()> {
let resp = self
diff --git a/core/src/services/cos/writer.rs b/core/src/services/cos/writer.rs
index b1d1dbac50..c236e12d01 100644
--- a/core/src/services/cos/writer.rs
+++ b/core/src/services/cos/writer.rs
@@ -45,7 +45,6 @@ impl CosWriter {
}
}
-#[async_trait]
impl oio::MultipartUploadWrite for CosWriter {
async fn write_once(&self, size: u64, body: AsyncBody) -> Result<()> {
let mut req = self
diff --git a/core/src/services/obs/writer.rs b/core/src/services/obs/writer.rs
index 1dff95eda1..900e66d98f 100644
--- a/core/src/services/obs/writer.rs
+++ b/core/src/services/obs/writer.rs
@@ -46,7 +46,6 @@ impl ObsWriter {
}
}
-#[async_trait]
impl oio::MultipartUploadWrite for ObsWriter {
async fn write_once(&self, size: u64, body: AsyncBody) -> Result<()> {
let mut req = self
diff --git a/core/src/services/oss/writer.rs b/core/src/services/oss/writer.rs
index 1770ffeb64..45254a454c 100644
--- a/core/src/services/oss/writer.rs
+++ b/core/src/services/oss/writer.rs
@@ -45,7 +45,6 @@ impl OssWriter {
}
}
-#[async_trait]
impl oio::MultipartUploadWrite for OssWriter {
async fn write_once(&self, size: u64, body: AsyncBody) -> Result<()> {
let mut req =
diff --git a/core/src/services/s3/writer.rs b/core/src/services/s3/writer.rs
index 22ecc041ab..c116f574c2 100644
--- a/core/src/services/s3/writer.rs
+++ b/core/src/services/s3/writer.rs
@@ -17,7 +17,6 @@
use std::sync::Arc;
-use async_trait::async_trait;
use http::StatusCode;
use super::core::*;
@@ -44,8 +43,6 @@ impl S3Writer {
}
}
-#[cfg_attr(not(target_arch = "wasm32"), async_trait)]
-#[cfg_attr(target_arch = "wasm32", async_trait(?Send))]
impl oio::MultipartUploadWrite for S3Writer {
async fn write_once(&self, size: u64, body: AsyncBody) -> Result<()> {
let mut req = self
diff --git a/core/src/services/upyun/writer.rs b/core/src/services/upyun/writer.rs
index b4f5082122..10793b58e5 100644
--- a/core/src/services/upyun/writer.rs
+++ b/core/src/services/upyun/writer.rs
@@ -17,7 +17,6 @@
use std::sync::Arc;
-use async_trait::async_trait;
use http::StatusCode;
use super::core::constants::X_UPYUN_MULTI_UUID;
@@ -40,7 +39,6 @@ impl UpyunWriter {
}
}
-#[async_trait]
impl oio::MultipartUploadWrite for UpyunWriter {
async fn write_once(&self, size: u64, body: AsyncBody) -> Result<()> {
let req = self