This is an automated email from the ASF dual-hosted git repository.
xuanwo pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/incubator-opendal.git
The following commit(s) were added to refs/heads/main by this push:
new 6bca1902 refactor: Rename `Create` to `CreateDir` for its behavior
changed (#2019)
6bca1902 is described below
commit 6bca190201ee1bbe32d779e3ad90b74ae5f9e869
Author: Xuanwo <[email protected]>
AuthorDate: Mon Apr 17 18:04:58 2023 +0800
refactor: Rename `Create` to `CreateDir` for its behavior changed (#2019)
Signed-off-by: Xuanwo <[email protected]>
---
core/src/docs/internals/accessor.rs | 2 +-
core/src/layers/concurrent_limit.rs | 8 +--
core/src/layers/error_context.rs | 12 ++---
core/src/layers/logging.rs | 20 ++++----
core/src/layers/metrics.rs | 20 ++++----
core/src/layers/minitrace.rs | 8 +--
core/src/layers/prometheus.rs | 18 +++----
core/src/layers/retry.rs | 12 ++---
core/src/layers/tracing.rs | 8 +--
core/src/raw/accessor.rs | 13 +++--
core/src/raw/adapters/kv/backend.rs | 4 +-
core/src/raw/layer.rs | 16 +++---
core/src/raw/operation.rs | 12 ++---
core/src/services/azblob/backend.rs | 2 +-
core/src/services/azdfs/backend.rs | 10 +---
core/src/services/fs/backend.rs | 68 +++----------------------
core/src/services/ftp/backend.rs | 4 +-
core/src/services/gcs/backend.rs | 2 +-
core/src/services/ghac/backend.rs | 2 +-
core/src/services/hdfs/backend.rs | 74 +++-------------------------
core/src/services/ipmfs/backend.rs | 8 +--
core/src/services/obs/backend.rs | 2 +-
core/src/services/oss/backend.rs | 2 +-
core/src/services/s3/backend.rs | 2 +-
core/src/services/wasabi/backend.rs | 2 +-
core/src/services/webdav/backend.rs | 2 +-
core/src/services/webhdfs/backend.rs | 4 +-
core/src/types/operator/blocking_operator.rs | 7 ++-
core/src/types/operator/operator.rs | 8 ++-
core/src/types/ops.rs | 14 ++----
core/src/types/reader.rs | 4 +-
core/src/types/writer.rs | 4 +-
32 files changed, 117 insertions(+), 257 deletions(-)
diff --git a/core/src/docs/internals/accessor.rs
b/core/src/docs/internals/accessor.rs
index c290005d..f2089b2b 100644
--- a/core/src/docs/internals/accessor.rs
+++ b/core/src/docs/internals/accessor.rs
@@ -54,7 +54,7 @@
//!
//! ```ignore
//! pub trait Accessor {
-//! async fn create(&self, path: &str) -> Result<()>;
+//! async fn create_dir(&self, path: &str) -> Result<()>;
//! }
//! ```
//!
diff --git a/core/src/layers/concurrent_limit.rs
b/core/src/layers/concurrent_limit.rs
index 0b325825..99e947b3 100644
--- a/core/src/layers/concurrent_limit.rs
+++ b/core/src/layers/concurrent_limit.rs
@@ -94,14 +94,14 @@ impl<A: Accessor> LayeredAccessor for
ConcurrentLimitAccessor<A> {
&self.inner
}
- async fn create(&self, path: &str, args: OpCreate) -> Result<RpCreate> {
+ async fn create_dir(&self, path: &str, args: OpCreate) -> Result<RpCreate>
{
let _permit = self
.semaphore
.acquire()
.await
.expect("semaphore must be valid");
- self.inner.create(path, args).await
+ self.inner.create_dir(path, args).await
}
async fn read(&self, path: &str, args: OpRead) -> Result<(RpRead,
Self::Reader)> {
@@ -190,13 +190,13 @@ impl<A: Accessor> LayeredAccessor for
ConcurrentLimitAccessor<A> {
self.inner.batch(args).await
}
- fn blocking_create(&self, path: &str, args: OpCreate) -> Result<RpCreate> {
+ fn blocking_create_dir(&self, path: &str, args: OpCreate) ->
Result<RpCreate> {
let _permit = self
.semaphore
.try_acquire()
.expect("semaphore must be valid");
- self.inner.blocking_create(path, args)
+ self.inner.blocking_create_dir(path, args)
}
fn blocking_read(&self, path: &str, args: OpRead) -> Result<(RpRead,
Self::BlockingReader)> {
diff --git a/core/src/layers/error_context.rs b/core/src/layers/error_context.rs
index 95ab68c0..29724613 100644
--- a/core/src/layers/error_context.rs
+++ b/core/src/layers/error_context.rs
@@ -82,11 +82,11 @@ impl<A: Accessor> LayeredAccessor for
ErrorContextAccessor<A> {
self.meta.clone()
}
- async fn create(&self, path: &str, args: OpCreate) -> Result<RpCreate> {
+ async fn create_dir(&self, path: &str, args: OpCreate) -> Result<RpCreate>
{
self.inner
- .create(path, args)
+ .create_dir(path, args)
.map_err(|err| {
- err.with_operation(Operation::Create)
+ err.with_operation(Operation::CreateDir)
.with_context("service", self.meta.scheme())
.with_context("path", path)
})
@@ -236,9 +236,9 @@ impl<A: Accessor> LayeredAccessor for
ErrorContextAccessor<A> {
.await
}
- fn blocking_create(&self, path: &str, args: OpCreate) -> Result<RpCreate> {
- self.inner.blocking_create(path, args).map_err(|err| {
- err.with_operation(Operation::BlockingCreate)
+ fn blocking_create_dir(&self, path: &str, args: OpCreate) ->
Result<RpCreate> {
+ self.inner.blocking_create_dir(path, args).map_err(|err| {
+ err.with_operation(Operation::BlockingCreateDir)
.with_context("service", self.meta.scheme())
.with_context("path", path)
})
diff --git a/core/src/layers/logging.rs b/core/src/layers/logging.rs
index 96940318..706287ad 100644
--- a/core/src/layers/logging.rs
+++ b/core/src/layers/logging.rs
@@ -198,24 +198,24 @@ impl<A: Accessor> LayeredAccessor for LoggingAccessor<A> {
result
}
- async fn create(&self, path: &str, args: OpCreate) -> Result<RpCreate> {
+ async fn create_dir(&self, path: &str, args: OpCreate) -> Result<RpCreate>
{
debug!(
target: LOGGING_TARGET,
"service={} operation={} path={} -> started",
self.scheme,
- Operation::Create,
+ Operation::CreateDir,
path
);
self.inner
- .create(path, args)
+ .create_dir(path, args)
.await
.map(|v| {
debug!(
target: LOGGING_TARGET,
"service={} operation={} path={} -> finished",
self.scheme,
- Operation::Create,
+ Operation::CreateDir,
path
);
v
@@ -227,7 +227,7 @@ impl<A: Accessor> LayeredAccessor for LoggingAccessor<A> {
lvl,
"service={} operation={} path={} -> {}: {err:?}",
self.scheme,
- Operation::Create,
+ Operation::CreateDir,
path,
self.err_status(&err)
)
@@ -654,23 +654,23 @@ impl<A: Accessor> LayeredAccessor for LoggingAccessor<A> {
.await
}
- fn blocking_create(&self, path: &str, args: OpCreate) -> Result<RpCreate> {
+ fn blocking_create_dir(&self, path: &str, args: OpCreate) ->
Result<RpCreate> {
debug!(
target: LOGGING_TARGET,
"service={} operation={} path={} -> started",
self.scheme,
- Operation::BlockingCreate,
+ Operation::BlockingCreateDir,
path
);
self.inner
- .blocking_create(path, args)
+ .blocking_create_dir(path, args)
.map(|v| {
debug!(
target: LOGGING_TARGET,
"service={} operation={} path={} -> finished",
self.scheme,
- Operation::BlockingCreate,
+ Operation::BlockingCreateDir,
path
);
v
@@ -682,7 +682,7 @@ impl<A: Accessor> LayeredAccessor for LoggingAccessor<A> {
lvl,
"service={} operation={} path={} -> {}: {err:?}",
self.scheme,
- Operation::BlockingCreate,
+ Operation::BlockingCreateDir,
path,
self.err_status(&err)
);
diff --git a/core/src/layers/metrics.rs b/core/src/layers/metrics.rs
index 4a24ca2e..2aff9003 100644
--- a/core/src/layers/metrics.rs
+++ b/core/src/layers/metrics.rs
@@ -213,12 +213,12 @@ impl MetricsHandler {
requests_total_create: register_counter!(
METRIC_REQUESTS_TOTAL,
LABEL_SERVICE => service,
- LABEL_OPERATION => Operation::Create.into_static(),
+ LABEL_OPERATION => Operation::CreateDir.into_static(),
),
requests_duration_seconds_create: register_histogram!(
METRIC_REQUESTS_DURATION_SECONDS,
LABEL_SERVICE => service,
- LABEL_OPERATION => Operation::Create.into_static(),
+ LABEL_OPERATION => Operation::CreateDir.into_static(),
),
requests_total_read: register_counter!(
@@ -322,12 +322,12 @@ impl MetricsHandler {
requests_total_blocking_create: register_counter!(
METRIC_REQUESTS_TOTAL,
LABEL_SERVICE => service,
- LABEL_OPERATION => Operation::BlockingCreate.into_static(),
+ LABEL_OPERATION => Operation::BlockingCreateDir.into_static(),
),
requests_duration_seconds_blocking_create: register_histogram!(
METRIC_REQUESTS_DURATION_SECONDS,
LABEL_SERVICE => service,
- LABEL_OPERATION => Operation::BlockingCreate.into_static(),
+ LABEL_OPERATION => Operation::BlockingCreateDir.into_static(),
),
requests_total_blocking_read: register_counter!(
@@ -460,13 +460,13 @@ impl<A: Accessor> LayeredAccessor for MetricsAccessor<A> {
result
}
- async fn create(&self, path: &str, args: OpCreate) -> Result<RpCreate> {
+ async fn create_dir(&self, path: &str, args: OpCreate) -> Result<RpCreate>
{
self.handle.requests_total_create.increment(1);
let start = Instant::now();
self.inner
- .create(path, args)
+ .create_dir(path, args)
.map(|v| {
let dur = start.elapsed().as_secs_f64();
@@ -474,7 +474,7 @@ impl<A: Accessor> LayeredAccessor for MetricsAccessor<A> {
v.map_err(|e| {
self.handle
- .increment_errors_total(Operation::Create, e.kind());
+ .increment_errors_total(Operation::CreateDir,
e.kind());
e
})
})
@@ -646,11 +646,11 @@ impl<A: Accessor> LayeredAccessor for MetricsAccessor<A> {
})
}
- fn blocking_create(&self, path: &str, args: OpCreate) -> Result<RpCreate> {
+ fn blocking_create_dir(&self, path: &str, args: OpCreate) ->
Result<RpCreate> {
self.handle.requests_total_blocking_create.increment(1);
let start = Instant::now();
- let result = self.inner.blocking_create(path, args);
+ let result = self.inner.blocking_create_dir(path, args);
let dur = start.elapsed().as_secs_f64();
self.handle
@@ -659,7 +659,7 @@ impl<A: Accessor> LayeredAccessor for MetricsAccessor<A> {
result.map_err(|e| {
self.handle
- .increment_errors_total(Operation::BlockingCreate, e.kind());
+ .increment_errors_total(Operation::BlockingCreateDir,
e.kind());
e
})
}
diff --git a/core/src/layers/minitrace.rs b/core/src/layers/minitrace.rs
index dd2f821c..fd977e96 100644
--- a/core/src/layers/minitrace.rs
+++ b/core/src/layers/minitrace.rs
@@ -146,8 +146,8 @@ impl<A: Accessor> LayeredAccessor for MinitraceAccessor<A> {
}
#[trace("create", enter_on_poll = true)]
- async fn create(&self, path: &str, args: OpCreate) -> Result<RpCreate> {
- self.inner.create(path, args).await
+ async fn create_dir(&self, path: &str, args: OpCreate) -> Result<RpCreate>
{
+ self.inner.create_dir(path, args).await
}
async fn read(&self, path: &str, args: OpRead) -> Result<(RpRead,
Self::Reader)> {
@@ -203,8 +203,8 @@ impl<A: Accessor> LayeredAccessor for MinitraceAccessor<A> {
}
#[trace("blocking_create")]
- fn blocking_create(&self, path: &str, args: OpCreate) -> Result<RpCreate> {
- self.inner.blocking_create(path, args)
+ fn blocking_create_dir(&self, path: &str, args: OpCreate) ->
Result<RpCreate> {
+ self.inner.blocking_create_dir(path, args)
}
fn blocking_read(&self, path: &str, args: OpRead) -> Result<(RpRead,
Self::BlockingReader)> {
diff --git a/core/src/layers/prometheus.rs b/core/src/layers/prometheus.rs
index 65040402..a83c716a 100644
--- a/core/src/layers/prometheus.rs
+++ b/core/src/layers/prometheus.rs
@@ -201,7 +201,7 @@ impl<A: Accessor> LayeredAccessor for PrometheusAccessor<A>
{
&self.inner
}
- async fn create(&self, path: &str, args: OpCreate) -> Result<RpCreate> {
+ async fn create_dir(&self, path: &str, args: OpCreate) -> Result<RpCreate>
{
self.stats
.requests_total
.with_label_values(&[&self.scheme])
@@ -210,14 +210,14 @@ impl<A: Accessor> LayeredAccessor for
PrometheusAccessor<A> {
let timer = self
.stats
.requests_duration_seconds
- .with_label_values(&[&self.scheme,
Operation::Create.into_static()])
+ .with_label_values(&[&self.scheme,
Operation::CreateDir.into_static()])
.start_timer();
- let create_res = self.inner.create(path, args).await;
+ let create_res = self.inner.create_dir(path, args).await;
timer.observe_duration();
create_res.map_err(|e| {
self.stats
- .increment_errors_total(Operation::Create, e.kind());
+ .increment_errors_total(Operation::CreateDir, e.kind());
e
})
}
@@ -428,24 +428,24 @@ impl<A: Accessor> LayeredAccessor for
PrometheusAccessor<A> {
})
}
- fn blocking_create(&self, path: &str, args: OpCreate) -> Result<RpCreate> {
+ fn blocking_create_dir(&self, path: &str, args: OpCreate) ->
Result<RpCreate> {
self.stats
.requests_total
- .with_label_values(&[&self.scheme,
Operation::BlockingCreate.into_static()])
+ .with_label_values(&[&self.scheme,
Operation::BlockingCreateDir.into_static()])
.inc();
let timer = self
.stats
.requests_duration_seconds
- .with_label_values(&[&self.scheme,
Operation::BlockingCreate.into_static()])
+ .with_label_values(&[&self.scheme,
Operation::BlockingCreateDir.into_static()])
.start_timer();
- let result = self.inner.blocking_create(path, args);
+ let result = self.inner.blocking_create_dir(path, args);
timer.observe_duration();
result.map_err(|e| {
self.stats
- .increment_errors_total(Operation::BlockingCreate, e.kind());
+ .increment_errors_total(Operation::BlockingCreateDir,
e.kind());
e
})
}
diff --git a/core/src/layers/retry.rs b/core/src/layers/retry.rs
index 96d31c3b..401bd53e 100644
--- a/core/src/layers/retry.rs
+++ b/core/src/layers/retry.rs
@@ -168,15 +168,15 @@ impl<A: Accessor> LayeredAccessor for RetryAccessor<A> {
&self.inner
}
- async fn create(&self, path: &str, args: OpCreate) -> Result<RpCreate> {
- { || self.inner.create(path, args.clone()) }
+ async fn create_dir(&self, path: &str, args: OpCreate) -> Result<RpCreate>
{
+ { || self.inner.create_dir(path, args.clone()) }
.retry(&self.builder)
.when(|e| e.is_temporary())
.notify(|err, dur| {
warn!(
target: "opendal::service",
"operation={} -> retry after {}s: error={:?}",
- Operation::Create, dur.as_secs_f64(), err)
+ Operation::CreateDir, dur.as_secs_f64(), err)
})
.map(|v| v.map_err(|e| e.set_persistent()))
.await
@@ -322,15 +322,15 @@ impl<A: Accessor> LayeredAccessor for RetryAccessor<A> {
.await
}
- fn blocking_create(&self, path: &str, args: OpCreate) -> Result<RpCreate> {
- { || self.inner.blocking_create(path, args.clone()) }
+ fn blocking_create_dir(&self, path: &str, args: OpCreate) ->
Result<RpCreate> {
+ { || self.inner.blocking_create_dir(path, args.clone()) }
.retry(&self.builder)
.when(|e| e.is_temporary())
.notify(|err, dur| {
warn!(
target: "opendal::service",
"operation={} -> retry after {}s: error={:?}",
- Operation::BlockingCreate, dur.as_secs_f64(), err)
+ Operation::BlockingCreateDir, dur.as_secs_f64(), err)
})
.call()
.map_err(|e| e.set_persistent())
diff --git a/core/src/layers/tracing.rs b/core/src/layers/tracing.rs
index 535db6c6..c210290e 100644
--- a/core/src/layers/tracing.rs
+++ b/core/src/layers/tracing.rs
@@ -151,8 +151,8 @@ impl<A: Accessor> LayeredAccessor for TracingAccessor<A> {
}
#[tracing::instrument(level = "debug", skip(self))]
- async fn create(&self, path: &str, args: OpCreate) -> Result<RpCreate> {
- self.inner.create(path, args).await
+ async fn create_dir(&self, path: &str, args: OpCreate) -> Result<RpCreate>
{
+ self.inner.create_dir(path, args).await
}
#[tracing::instrument(level = "debug", skip(self))]
@@ -208,8 +208,8 @@ impl<A: Accessor> LayeredAccessor for TracingAccessor<A> {
}
#[tracing::instrument(level = "debug", skip(self))]
- fn blocking_create(&self, path: &str, args: OpCreate) -> Result<RpCreate> {
- self.inner.blocking_create(path, args)
+ fn blocking_create_dir(&self, path: &str, args: OpCreate) ->
Result<RpCreate> {
+ self.inner.blocking_create_dir(path, args)
}
#[tracing::instrument(level = "debug", skip(self))]
diff --git a/core/src/raw/accessor.rs b/core/src/raw/accessor.rs
index 84d4b7aa..5bd30f4d 100644
--- a/core/src/raw/accessor.rs
+++ b/core/src/raw/accessor.rs
@@ -86,8 +86,7 @@ pub trait Accessor: Send + Sync + Debug + Unpin + 'static {
///
/// - Input path MUST match with EntryMode, DON'T NEED to check mode.
/// - Create on existing dir SHOULD succeed.
- /// - Create on existing file SHOULD overwrite and truncate.
- async fn create(&self, path: &str, args: OpCreate) -> Result<RpCreate> {
+ async fn create_dir(&self, path: &str, args: OpCreate) -> Result<RpCreate>
{
let (_, _) = (path, args);
Err(Error::new(
@@ -256,7 +255,7 @@ pub trait Accessor: Send + Sync + Debug + Unpin + 'static {
/// This operation is the blocking version of [`Accessor::create`]
///
/// Require [`AccessorCapability::Write`] and
[`AccessorCapability::Blocking`]
- fn blocking_create(&self, path: &str, args: OpCreate) -> Result<RpCreate> {
+ fn blocking_create_dir(&self, path: &str, args: OpCreate) ->
Result<RpCreate> {
let (_, _) = (path, args);
Err(Error::new(
@@ -417,8 +416,8 @@ impl<T: Accessor + ?Sized> Accessor for Arc<T> {
self.as_ref().info()
}
- async fn create(&self, path: &str, args: OpCreate) -> Result<RpCreate> {
- self.as_ref().create(path, args).await
+ async fn create_dir(&self, path: &str, args: OpCreate) -> Result<RpCreate>
{
+ self.as_ref().create_dir(path, args).await
}
async fn read(&self, path: &str, args: OpRead) -> Result<(RpRead,
Self::Reader)> {
@@ -457,8 +456,8 @@ impl<T: Accessor + ?Sized> Accessor for Arc<T> {
self.as_ref().presign(path, args).await
}
- fn blocking_create(&self, path: &str, args: OpCreate) -> Result<RpCreate> {
- self.as_ref().blocking_create(path, args)
+ fn blocking_create_dir(&self, path: &str, args: OpCreate) ->
Result<RpCreate> {
+ self.as_ref().blocking_create_dir(path, args)
}
fn blocking_read(&self, path: &str, args: OpRead) -> Result<(RpRead,
Self::BlockingReader)> {
self.as_ref().blocking_read(path, args)
diff --git a/core/src/raw/adapters/kv/backend.rs
b/core/src/raw/adapters/kv/backend.rs
index 1f373cbb..15dc7beb 100644
--- a/core/src/raw/adapters/kv/backend.rs
+++ b/core/src/raw/adapters/kv/backend.rs
@@ -68,13 +68,13 @@ impl<S: Adapter> Accessor for Backend<S> {
am
}
- async fn create(&self, path: &str, _: OpCreate) -> Result<RpCreate> {
+ async fn create_dir(&self, path: &str, _: OpCreate) -> Result<RpCreate> {
let p = build_abs_path(&self.root, path);
self.kv.set(&p, &[]).await?;
Ok(RpCreate::default())
}
- fn blocking_create(&self, path: &str, _: OpCreate) -> Result<RpCreate> {
+ fn blocking_create_dir(&self, path: &str, _: OpCreate) -> Result<RpCreate>
{
let p = build_abs_path(&self.root, path);
self.kv.blocking_set(&p, &[])?;
diff --git a/core/src/raw/layer.rs b/core/src/raw/layer.rs
index bb49abdd..5c122952 100644
--- a/core/src/raw/layer.rs
+++ b/core/src/raw/layer.rs
@@ -151,8 +151,8 @@ pub trait LayeredAccessor: Send + Sync + Debug + Unpin +
'static {
self.inner().info()
}
- async fn create(&self, path: &str, args: OpCreate) -> Result<RpCreate> {
- self.inner().create(path, args).await
+ async fn create_dir(&self, path: &str, args: OpCreate) -> Result<RpCreate>
{
+ self.inner().create_dir(path, args).await
}
async fn read(&self, path: &str, args: OpRead) -> Result<(RpRead,
Self::Reader)>;
@@ -187,8 +187,8 @@ pub trait LayeredAccessor: Send + Sync + Debug + Unpin +
'static {
self.inner().presign(path, args).await
}
- fn blocking_create(&self, path: &str, args: OpCreate) -> Result<RpCreate> {
- self.inner().blocking_create(path, args)
+ fn blocking_create_dir(&self, path: &str, args: OpCreate) ->
Result<RpCreate> {
+ self.inner().blocking_create_dir(path, args)
}
fn blocking_read(&self, path: &str, args: OpRead) -> Result<(RpRead,
Self::BlockingReader)>;
@@ -229,8 +229,8 @@ impl<L: LayeredAccessor> Accessor for L {
(self as &L).metadata()
}
- async fn create(&self, path: &str, args: OpCreate) -> Result<RpCreate> {
- (self as &L).create(path, args).await
+ async fn create_dir(&self, path: &str, args: OpCreate) -> Result<RpCreate>
{
+ (self as &L).create_dir(path, args).await
}
async fn read(&self, path: &str, args: OpRead) -> Result<(RpRead,
Self::Reader)> {
@@ -273,8 +273,8 @@ impl<L: LayeredAccessor> Accessor for L {
(self as &L).presign(path, args).await
}
- fn blocking_create(&self, path: &str, args: OpCreate) -> Result<RpCreate> {
- (self as &L).blocking_create(path, args)
+ fn blocking_create_dir(&self, path: &str, args: OpCreate) ->
Result<RpCreate> {
+ (self as &L).blocking_create_dir(path, args)
}
fn blocking_read(&self, path: &str, args: OpRead) -> Result<(RpRead,
Self::BlockingReader)> {
diff --git a/core/src/raw/operation.rs b/core/src/raw/operation.rs
index 7fd661ac..1c37cbf4 100644
--- a/core/src/raw/operation.rs
+++ b/core/src/raw/operation.rs
@@ -25,8 +25,8 @@ pub enum Operation {
/// Operation for [`crate::raw::Accessor::info`]
#[default]
Info,
- /// Operation for [`crate::raw::Accessor::create`]
- Create,
+ /// Operation for [`crate::raw::Accessor::create_dir`]
+ CreateDir,
/// Operation for [`crate::raw::Accessor::read`]
Read,
/// Operation for [`crate::raw::Accessor::write`]
@@ -47,8 +47,8 @@ pub enum Operation {
Batch,
/// Operation for [`crate::raw::Accessor::presign`]
Presign,
- /// Operation for [`crate::raw::Accessor::blocking_create`]
- BlockingCreate,
+ /// Operation for [`crate::raw::Accessor::blocking_create_dir`]
+ BlockingCreateDir,
/// Operation for [`crate::raw::Accessor::blocking_read`]
BlockingRead,
/// Operation for [`crate::raw::Accessor::blocking_write`]
@@ -84,7 +84,7 @@ impl From<Operation> for &'static str {
fn from(v: Operation) -> &'static str {
match v {
Operation::Info => "metadata",
- Operation::Create => "create",
+ Operation::CreateDir => "create_dir",
Operation::Read => "read",
Operation::Write => "write",
Operation::Copy => "copy",
@@ -95,7 +95,7 @@ impl From<Operation> for &'static str {
Operation::Scan => "scan",
Operation::Presign => "presign",
Operation::Batch => "batch",
- Operation::BlockingCreate => "blocking_create",
+ Operation::BlockingCreateDir => "blocking_create_dir",
Operation::BlockingRead => "blocking_read",
Operation::BlockingWrite => "blocking_write",
Operation::BlockingCopy => "blocking_copy",
diff --git a/core/src/services/azblob/backend.rs
b/core/src/services/azblob/backend.rs
index 867b2659..5daa104e 100644
--- a/core/src/services/azblob/backend.rs
+++ b/core/src/services/azblob/backend.rs
@@ -461,7 +461,7 @@ impl Accessor for AzblobBackend {
am
}
- async fn create(&self, path: &str, _: OpCreate) -> Result<RpCreate> {
+ async fn create_dir(&self, path: &str, _: OpCreate) -> Result<RpCreate> {
let mut req = self
.core
.azblob_put_blob_request(path, Some(0), None, AsyncBody::Empty)?;
diff --git a/core/src/services/azdfs/backend.rs
b/core/src/services/azdfs/backend.rs
index 825e7466..5c0b68db 100644
--- a/core/src/services/azdfs/backend.rs
+++ b/core/src/services/azdfs/backend.rs
@@ -319,16 +319,10 @@ impl Accessor for AzdfsBackend {
am
}
- async fn create(&self, path: &str, args: OpCreate) -> Result<RpCreate> {
- let resource = match args.mode() {
- EntryMode::FILE => "file",
- EntryMode::DIR => "directory",
- _ => unimplemented!("not supported object mode"),
- };
-
+ async fn create_dir(&self, path: &str, _: OpCreate) -> Result<RpCreate> {
let mut req =
self.core
- .azdfs_create_request(path, resource, None, None,
AsyncBody::Empty)?;
+ .azdfs_create_request(path, "directory", None, None,
AsyncBody::Empty)?;
self.core.sign(&mut req).await?;
diff --git a/core/src/services/fs/backend.rs b/core/src/services/fs/backend.rs
index e5159db5..9bedaa1d 100644
--- a/core/src/services/fs/backend.rs
+++ b/core/src/services/fs/backend.rs
@@ -313,41 +313,12 @@ impl Accessor for FsBackend {
am
}
- async fn create(&self, path: &str, args: OpCreate) -> Result<RpCreate> {
+ async fn create_dir(&self, path: &str, _: OpCreate) -> Result<RpCreate> {
let p = self.root.join(path.trim_end_matches('/'));
- if args.mode() == EntryMode::FILE {
- let parent = p
- .parent()
- .ok_or_else(|| {
- Error::new(
- ErrorKind::Unexpected,
- "path should have parent but not, it must be
malformed",
- )
- .with_context("input", p.to_string_lossy())
- })?
- .to_path_buf();
-
- fs::create_dir_all(&parent).await.map_err(parse_io_error)?;
-
- fs::OpenOptions::new()
- .create(true)
- .truncate(true)
- .write(true)
- .open(&p)
- .await
- .map_err(parse_io_error)?;
-
- return Ok(RpCreate::default());
- }
-
- if args.mode() == EntryMode::DIR {
- fs::create_dir_all(&p).await.map_err(parse_io_error)?;
-
- return Ok(RpCreate::default());
- }
+ fs::create_dir_all(&p).await.map_err(parse_io_error)?;
- unreachable!()
+ Ok(RpCreate::default())
}
/// # Notes
@@ -540,39 +511,12 @@ impl Accessor for FsBackend {
Ok((RpList::default(), Some(rd)))
}
- fn blocking_create(&self, path: &str, args: OpCreate) -> Result<RpCreate> {
+ fn blocking_create_dir(&self, path: &str, _: OpCreate) -> Result<RpCreate>
{
let p = self.root.join(path.trim_end_matches('/'));
- if args.mode() == EntryMode::FILE {
- let parent = p
- .parent()
- .ok_or_else(|| {
- Error::new(
- ErrorKind::Unexpected,
- "path should have parent but not, it must be
malformed",
- )
- .with_context("input", p.to_string_lossy())
- })?
- .to_path_buf();
-
- std::fs::create_dir_all(parent).map_err(parse_io_error)?;
-
- std::fs::OpenOptions::new()
- .create(true)
- .write(true)
- .open(&p)
- .map_err(parse_io_error)?;
-
- return Ok(RpCreate::default());
- }
-
- if args.mode() == EntryMode::DIR {
- std::fs::create_dir_all(&p).map_err(parse_io_error)?;
-
- return Ok(RpCreate::default());
- }
+ std::fs::create_dir_all(p).map_err(parse_io_error)?;
- unreachable!()
+ Ok(RpCreate::default())
}
fn blocking_read(&self, path: &str, args: OpRead) -> Result<(RpRead,
Self::BlockingReader)> {
diff --git a/core/src/services/ftp/backend.rs b/core/src/services/ftp/backend.rs
index 75262323..f509eff2 100644
--- a/core/src/services/ftp/backend.rs
+++ b/core/src/services/ftp/backend.rs
@@ -323,8 +323,8 @@ impl Accessor for FtpBackend {
am
}
- async fn create(&self, path: &str, _: OpCreate) -> Result<RpCreate> {
- let mut ftp_stream = self.ftp_connect(Operation::Create).await?;
+ async fn create_dir(&self, path: &str, _: OpCreate) -> Result<RpCreate> {
+ let mut ftp_stream = self.ftp_connect(Operation::CreateDir).await?;
let paths: Vec<&str> = path.split_inclusive('/').collect();
diff --git a/core/src/services/gcs/backend.rs b/core/src/services/gcs/backend.rs
index cbd5cb5f..6cfafaad 100644
--- a/core/src/services/gcs/backend.rs
+++ b/core/src/services/gcs/backend.rs
@@ -381,7 +381,7 @@ impl Accessor for GcsBackend {
am
}
- async fn create(&self, path: &str, _: OpCreate) -> Result<RpCreate> {
+ async fn create_dir(&self, path: &str, _: OpCreate) -> Result<RpCreate> {
let mut req = self
.core
.gcs_insert_object_request(path, Some(0), None, AsyncBody::Empty)?;
diff --git a/core/src/services/ghac/backend.rs
b/core/src/services/ghac/backend.rs
index a3279b9d..159b0022 100644
--- a/core/src/services/ghac/backend.rs
+++ b/core/src/services/ghac/backend.rs
@@ -305,7 +305,7 @@ impl Accessor for GhacBackend {
am
}
- async fn create(&self, path: &str, _: OpCreate) -> Result<RpCreate> {
+ async fn create_dir(&self, path: &str, _: OpCreate) -> Result<RpCreate> {
// ignore creation of dir.
if path.ends_with('/') {
return Ok(RpCreate::default());
diff --git a/core/src/services/hdfs/backend.rs
b/core/src/services/hdfs/backend.rs
index e13948d3..84f38ec5 100644
--- a/core/src/services/hdfs/backend.rs
+++ b/core/src/services/hdfs/backend.rs
@@ -243,43 +243,12 @@ impl Accessor for HdfsBackend {
am
}
- async fn create(&self, path: &str, args: OpCreate) -> Result<RpCreate> {
+ async fn create_dir(&self, path: &str, _: OpCreate) -> Result<RpCreate> {
let p = build_rooted_abs_path(&self.root, path);
- match args.mode() {
- EntryMode::FILE => {
- let parent = PathBuf::from(&p)
- .parent()
- .ok_or_else(|| {
- Error::new(
- ErrorKind::Unexpected,
- "path should have parent but not, it must be
malformed",
- )
- .with_context("input", &p)
- })?
- .to_path_buf();
-
- self.client
- .create_dir(&parent.to_string_lossy())
- .map_err(parse_io_error)?;
-
- self.client
- .open_file()
- .create(true)
- .write(true)
- .truncate(true)
- .open(&p)
- .map_err(parse_io_error)?;
-
- Ok(RpCreate::default())
- }
- EntryMode::DIR => {
- self.client.create_dir(&p).map_err(parse_io_error)?;
+ self.client.create_dir(&p).map_err(parse_io_error)?;
- Ok(RpCreate::default())
- }
- EntryMode::Unknown => unreachable!(),
- }
+ Ok(RpCreate::default())
}
async fn read(&self, path: &str, args: OpRead) -> Result<(RpRead,
Self::Reader)> {
@@ -412,43 +381,12 @@ impl Accessor for HdfsBackend {
Ok((RpList::default(), Some(rd)))
}
- fn blocking_create(&self, path: &str, args: OpCreate) -> Result<RpCreate> {
+ fn blocking_create_dir(&self, path: &str, _: OpCreate) -> Result<RpCreate>
{
let p = build_rooted_abs_path(&self.root, path);
- match args.mode() {
- EntryMode::FILE => {
- let parent = PathBuf::from(&p)
- .parent()
- .ok_or_else(|| {
- Error::new(
- ErrorKind::Unexpected,
- "path should have parent but not, it must be
malformed",
- )
- .with_context("input", &p)
- })?
- .to_path_buf();
-
- self.client
- .create_dir(&parent.to_string_lossy())
- .map_err(parse_io_error)?;
-
- self.client
- .open_file()
- .create(true)
- .write(true)
- .truncate(true)
- .open(&p)
- .map_err(parse_io_error)?;
-
- Ok(RpCreate::default())
- }
- EntryMode::DIR => {
- self.client.create_dir(&p).map_err(parse_io_error)?;
+ self.client.create_dir(&p).map_err(parse_io_error)?;
- Ok(RpCreate::default())
- }
- EntryMode::Unknown => unreachable!(),
- }
+ Ok(RpCreate::default())
}
fn blocking_read(&self, path: &str, args: OpRead) -> Result<(RpRead,
Self::BlockingReader)> {
diff --git a/core/src/services/ipmfs/backend.rs
b/core/src/services/ipmfs/backend.rs
index 9984a4d1..c2e59f84 100644
--- a/core/src/services/ipmfs/backend.rs
+++ b/core/src/services/ipmfs/backend.rs
@@ -81,12 +81,8 @@ impl Accessor for IpmfsBackend {
am
}
- async fn create(&self, path: &str, args: OpCreate) -> Result<RpCreate> {
- let resp = match args.mode() {
- EntryMode::DIR => self.ipmfs_mkdir(path).await?,
- EntryMode::FILE => self.ipmfs_write(path, AsyncBody::Empty).await?,
- _ => unreachable!(),
- };
+ async fn create_dir(&self, path: &str, _: OpCreate) -> Result<RpCreate> {
+ let resp = self.ipmfs_mkdir(path).await?;
let status = resp.status();
diff --git a/core/src/services/obs/backend.rs b/core/src/services/obs/backend.rs
index 9732b6f7..fb5fc2f2 100644
--- a/core/src/services/obs/backend.rs
+++ b/core/src/services/obs/backend.rs
@@ -314,7 +314,7 @@ impl Accessor for ObsBackend {
am
}
- async fn create(&self, path: &str, _: OpCreate) -> Result<RpCreate> {
+ async fn create_dir(&self, path: &str, _: OpCreate) -> Result<RpCreate> {
let mut req = self
.core
.obs_put_object_request(path, Some(0), None, AsyncBody::Empty)?;
diff --git a/core/src/services/oss/backend.rs b/core/src/services/oss/backend.rs
index 4458338d..56eff1e4 100644
--- a/core/src/services/oss/backend.rs
+++ b/core/src/services/oss/backend.rs
@@ -371,7 +371,7 @@ impl Accessor for OssBackend {
am
}
- async fn create(&self, path: &str, _: OpCreate) -> Result<RpCreate> {
+ async fn create_dir(&self, path: &str, _: OpCreate) -> Result<RpCreate> {
let resp = self
.core
.oss_put_object(path, None, None, None, None, AsyncBody::Empty)
diff --git a/core/src/services/s3/backend.rs b/core/src/services/s3/backend.rs
index 3bb09efb..c3fa6aac 100644
--- a/core/src/services/s3/backend.rs
+++ b/core/src/services/s3/backend.rs
@@ -921,7 +921,7 @@ impl Accessor for S3Backend {
am
}
- async fn create(&self, path: &str, _: OpCreate) -> Result<RpCreate> {
+ async fn create_dir(&self, path: &str, _: OpCreate) -> Result<RpCreate> {
let mut req =
self.core
.s3_put_object_request(path, Some(0), None, None, None,
AsyncBody::Empty)?;
diff --git a/core/src/services/wasabi/backend.rs
b/core/src/services/wasabi/backend.rs
index de4735b8..49ed6bc3 100644
--- a/core/src/services/wasabi/backend.rs
+++ b/core/src/services/wasabi/backend.rs
@@ -911,7 +911,7 @@ impl Accessor for WasabiBackend {
am
}
- async fn create(&self, path: &str, _: OpCreate) -> Result<RpCreate> {
+ async fn create_dir(&self, path: &str, _: OpCreate) -> Result<RpCreate> {
let mut req =
self.core
.put_object_request(path, Some(0), None, None, None,
AsyncBody::Empty)?;
diff --git a/core/src/services/webdav/backend.rs
b/core/src/services/webdav/backend.rs
index 2f7fb30c..23032855 100644
--- a/core/src/services/webdav/backend.rs
+++ b/core/src/services/webdav/backend.rs
@@ -278,7 +278,7 @@ impl Accessor for WebdavBackend {
ma
}
- async fn create(&self, path: &str, _: OpCreate) -> Result<RpCreate> {
+ async fn create_dir(&self, path: &str, _: OpCreate) -> Result<RpCreate> {
self.ensure_parent_path(path).await?;
let abs_path = build_abs_path(&self.root, path);
diff --git a/core/src/services/webhdfs/backend.rs
b/core/src/services/webhdfs/backend.rs
index 295ef755..094bef24 100644
--- a/core/src/services/webhdfs/backend.rs
+++ b/core/src/services/webhdfs/backend.rs
@@ -444,7 +444,7 @@ impl WebhdfsBackend {
}
}
StatusCode::NOT_FOUND => {
- self.create("/", OpCreate::new(EntryMode::DIR)).await?;
+ self.create_dir("/", OpCreate::new()).await?;
}
_ => return Err(parse_error(resp).await?),
}
@@ -473,7 +473,7 @@ impl Accessor for WebhdfsBackend {
}
/// Create a file or directory
- async fn create(&self, path: &str, _: OpCreate) -> Result<RpCreate> {
+ async fn create_dir(&self, path: &str, _: OpCreate) -> Result<RpCreate> {
let req = self
.webhdfs_create_object_request(path, Some(0), None,
AsyncBody::Empty)
.await?;
diff --git a/core/src/types/operator/blocking_operator.rs
b/core/src/types/operator/blocking_operator.rs
index a2503ed6..c6bae2dd 100644
--- a/core/src/types/operator/blocking_operator.rs
+++ b/core/src/types/operator/blocking_operator.rs
@@ -303,8 +303,7 @@ impl BlockingOperator {
.with_context("path", &path));
}
- self.inner()
- .blocking_create(&path, OpCreate::new(EntryMode::DIR))?;
+ self.inner().blocking_create_dir(&path, OpCreate::new())?;
Ok(())
}
@@ -420,7 +419,7 @@ impl BlockingOperator {
let op = OpRead::new().with_range(range.into());
- BlockingReader::create(self.inner().clone(), &path, op)
+ BlockingReader::create_dir(self.inner().clone(), &path, op)
}
/// Write bytes into given path.
@@ -638,7 +637,7 @@ impl BlockingOperator {
}
let op = OpWrite::default().with_append();
- BlockingWriter::create(self.inner().clone(), &path, op)
+ BlockingWriter::create_dir(self.inner().clone(), &path, op)
}
/// Delete given path.
diff --git a/core/src/types/operator/operator.rs
b/core/src/types/operator/operator.rs
index fed7e285..32a60a22 100644
--- a/core/src/types/operator/operator.rs
+++ b/core/src/types/operator/operator.rs
@@ -390,9 +390,7 @@ impl Operator {
.with_context("path", &path));
}
- self.inner()
- .create(&path, OpCreate::new(EntryMode::DIR))
- .await?;
+ self.inner().create_dir(&path, OpCreate::new()).await?;
Ok(())
}
@@ -606,7 +604,7 @@ impl Operator {
);
}
- Reader::create(self.inner().clone(), &path, args).await
+ Reader::create_dir(self.inner().clone(), &path, args).await
}
/// Write bytes into path.
@@ -817,7 +815,7 @@ impl Operator {
);
}
- Writer::create(self.inner().clone(), &path, args.with_append()).await
+ Writer::create_dir(self.inner().clone(), &path,
args.with_append()).await
}
/// Write data with extra options.
diff --git a/core/src/types/ops.rs b/core/src/types/ops.rs
index 3d24f45e..616316a5 100644
--- a/core/src/types/ops.rs
+++ b/core/src/types/ops.rs
@@ -22,25 +22,17 @@
use std::time::Duration;
use crate::raw::*;
-use crate::*;
/// Args for `create` operation.
///
/// The path must be normalized.
#[derive(Debug, Clone, Default)]
-pub struct OpCreate {
- mode: EntryMode,
-}
+pub struct OpCreate {}
impl OpCreate {
/// Create a new `OpCreate`.
- pub fn new(mode: EntryMode) -> Self {
- Self { mode }
- }
-
- /// Get mode from option.
- pub fn mode(&self) -> EntryMode {
- self.mode
+ pub fn new() -> Self {
+ Self::default()
}
}
diff --git a/core/src/types/reader.rs b/core/src/types/reader.rs
index 63c30665..068a7c8c 100644
--- a/core/src/types/reader.rs
+++ b/core/src/types/reader.rs
@@ -67,7 +67,7 @@ impl Reader {
///
/// We don't want to expose those details to users so keep this function
/// in crate only.
- pub(crate) async fn create(acc: FusedAccessor, path: &str, op: OpRead) ->
Result<Self> {
+ pub(crate) async fn create_dir(acc: FusedAccessor, path: &str, op: OpRead)
-> Result<Self> {
let (_, r) = acc.read(path, op).await?;
Ok(Reader {
@@ -192,7 +192,7 @@ impl BlockingReader {
///
/// We don't want to expose those details to users so keep this function
/// in crate only.
- pub(crate) fn create(acc: FusedAccessor, path: &str, op: OpRead) ->
Result<Self> {
+ pub(crate) fn create_dir(acc: FusedAccessor, path: &str, op: OpRead) ->
Result<Self> {
let acc_meta = acc.info();
let r = if acc_meta.hints().contains(AccessorHint::ReadSeekable) {
diff --git a/core/src/types/writer.rs b/core/src/types/writer.rs
index 24ac2793..96c8c0e5 100644
--- a/core/src/types/writer.rs
+++ b/core/src/types/writer.rs
@@ -51,7 +51,7 @@ impl Writer {
///
/// We don't want to expose those details to users so keep this function
/// in crate only.
- pub(crate) async fn create(acc: FusedAccessor, path: &str, op: OpWrite) ->
Result<Self> {
+ pub(crate) async fn create_dir(acc: FusedAccessor, path: &str, op:
OpWrite) -> Result<Self> {
let (_, w) = acc.write(path, op).await?;
Ok(Writer {
@@ -185,7 +185,7 @@ impl BlockingWriter {
///
/// We don't want to expose those details to users so keep this function
/// in crate only.
- pub(crate) fn create(acc: FusedAccessor, path: &str, op: OpWrite) ->
Result<Self> {
+ pub(crate) fn create_dir(acc: FusedAccessor, path: &str, op: OpWrite) ->
Result<Self> {
let (_, w) = acc.blocking_write(path, op)?;
Ok(BlockingWriter { inner: w })