opendal 0.1.8 → 0.1.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.gitignore +0 -1
- data/Cargo.lock +3448 -0
- data/Cargo.toml +1 -1
- data/DEPENDENCIES.rust.tsv +31 -31
- data/README.md +4 -1
- data/Rakefile +0 -7
- data/core/CHANGELOG.md +80 -0
- data/core/Cargo.lock +495 -599
- data/core/Cargo.toml +98 -95
- data/core/DEPENDENCIES.rust.tsv +319 -324
- data/core/NOTICE +5 -0
- data/core/README.md +11 -6
- data/core/benches/vs_fs/Cargo.toml +1 -1
- data/core/benches/vs_s3/Cargo.toml +1 -1
- data/core/core/Cargo.toml +2 -2
- data/core/core/LICENSE +201 -0
- data/core/core/NOTICE +5 -0
- data/core/core/README.md +93 -0
- data/core/core/src/blocking/delete.rs +2 -2
- data/core/core/src/blocking/list.rs +2 -1
- data/core/core/src/blocking/operator.rs +10 -5
- data/core/core/src/blocking/read/std_bytes_iterator.rs +2 -1
- data/core/core/src/blocking/read/std_reader.rs +2 -1
- data/core/core/src/blocking/write/std_writer.rs +1 -1
- data/core/core/src/docs/performance/http_optimization.md +9 -1
- data/core/core/src/docs/rfcs/7749_http_transporter.md +9 -5
- data/core/core/src/layers/mod.rs +6 -1
- data/core/core/src/lib.rs +2 -137
- data/core/core/src/raw/accessor.rs +23 -21
- data/core/core/src/raw/oio/buf/queue_buf.rs +4 -2
- data/core/core/src/raw/oio/write/block_write.rs +3 -2
- data/core/core/src/raw/operation.rs +5 -5
- data/core/core/src/raw/ops.rs +85 -63
- data/core/core/src/raw/std_io_util.rs +33 -1
- data/core/core/src/services/memory/backend.rs +0 -1
- data/core/core/src/services/memory/mod.rs +6 -2
- data/core/core/src/services/mod.rs +8 -2
- data/core/core/src/types/buffer.rs +4 -4
- data/core/core/src/types/builder.rs +15 -17
- data/core/core/src/types/copy.rs +3 -3
- data/core/core/src/types/entry.rs +3 -1
- data/core/core/src/types/error.rs +16 -11
- data/core/core/src/types/execute/executors/mod.rs +3 -3
- data/core/core/src/types/http_transport/mod.rs +6 -0
- data/core/core/src/types/list.rs +5 -6
- data/core/core/src/types/operator/info.rs +6 -4
- data/core/core/src/types/operator/mod.rs +1 -1
- data/core/core/src/types/operator/operator.rs +42 -8
- data/core/core/src/types/operator/operator_futures.rs +36 -38
- data/core/core/src/types/operator/registry.rs +73 -14
- data/core/core/src/types/options.rs +48 -42
- data/core/core/src/types/read/reader.rs +2 -1
- data/core/core/src/types/write/writer.rs +2 -1
- data/core/http-transports/reqwest/Cargo.toml +2 -1
- data/core/http-transports/reqwest/LICENSE +201 -0
- data/core/http-transports/reqwest/NOTICE +5 -0
- data/core/http-transports/reqwest/README.md +37 -9
- data/core/http-transports/reqwest/src/lib.rs +30 -51
- data/core/layers/async-backtrace/Cargo.toml +3 -2
- data/core/layers/async-backtrace/LICENSE +201 -0
- data/core/layers/async-backtrace/NOTICE +5 -0
- data/core/layers/async-backtrace/README.md +48 -0
- data/core/layers/async-backtrace/src/lib.rs +5 -5
- data/core/layers/await-tree/Cargo.toml +3 -2
- data/core/layers/await-tree/LICENSE +201 -0
- data/core/layers/await-tree/NOTICE +5 -0
- data/core/layers/await-tree/README.md +48 -0
- data/core/layers/await-tree/src/lib.rs +5 -6
- data/core/layers/capability-check/Cargo.toml +3 -2
- data/core/layers/capability-check/LICENSE +201 -0
- data/core/layers/capability-check/NOTICE +5 -0
- data/core/layers/capability-check/README.md +48 -0
- data/core/layers/capability-check/src/lib.rs +7 -8
- data/core/layers/chaos/Cargo.toml +3 -2
- data/core/layers/chaos/LICENSE +201 -0
- data/core/layers/chaos/NOTICE +5 -0
- data/core/layers/chaos/README.md +47 -0
- data/core/layers/chaos/src/lib.rs +6 -7
- data/core/layers/concurrent-limit/Cargo.toml +3 -2
- data/core/layers/concurrent-limit/LICENSE +201 -0
- data/core/layers/concurrent-limit/NOTICE +5 -0
- data/core/layers/concurrent-limit/README.md +48 -0
- data/core/layers/concurrent-limit/src/lib.rs +8 -14
- data/core/layers/dtrace/Cargo.toml +3 -2
- data/core/layers/dtrace/LICENSE +201 -0
- data/core/layers/dtrace/NOTICE +5 -0
- data/core/layers/dtrace/README.md +52 -0
- data/core/layers/dtrace/src/lib.rs +5 -5
- data/core/layers/fastmetrics/Cargo.toml +4 -3
- data/core/layers/fastmetrics/LICENSE +201 -0
- data/core/layers/fastmetrics/NOTICE +5 -0
- data/core/layers/fastmetrics/README.md +47 -0
- data/core/layers/fastmetrics/src/lib.rs +4 -4
- data/core/layers/fastrace/Cargo.toml +3 -2
- data/core/layers/fastrace/LICENSE +201 -0
- data/core/layers/fastrace/NOTICE +5 -0
- data/core/layers/fastrace/README.md +47 -0
- data/core/layers/fastrace/src/lib.rs +5 -5
- data/core/layers/foyer/Cargo.toml +3 -2
- data/core/layers/foyer/LICENSE +201 -0
- data/core/layers/foyer/NOTICE +5 -0
- data/core/layers/foyer/README.md +47 -0
- data/core/layers/foyer/src/deleter.rs +1 -0
- data/core/layers/foyer/src/lib.rs +27 -10
- data/core/layers/foyer/src/writer.rs +1 -0
- data/core/layers/hotpath/Cargo.toml +4 -3
- data/core/layers/hotpath/LICENSE +201 -0
- data/core/layers/hotpath/NOTICE +5 -0
- data/core/layers/hotpath/README.md +47 -0
- data/core/layers/hotpath/src/lib.rs +4 -4
- data/core/layers/immutable-index/Cargo.toml +3 -2
- data/core/layers/immutable-index/LICENSE +201 -0
- data/core/layers/immutable-index/NOTICE +5 -0
- data/core/layers/immutable-index/README.md +48 -0
- data/core/layers/immutable-index/src/lib.rs +3 -4
- data/core/layers/logging/Cargo.toml +3 -2
- data/core/layers/logging/LICENSE +201 -0
- data/core/layers/logging/NOTICE +5 -0
- data/core/layers/logging/README.md +47 -0
- data/core/layers/logging/src/lib.rs +11 -11
- data/core/layers/metrics/Cargo.toml +4 -3
- data/core/layers/metrics/LICENSE +201 -0
- data/core/layers/metrics/NOTICE +5 -0
- data/core/layers/metrics/README.md +47 -0
- data/core/layers/metrics/src/lib.rs +6 -6
- data/core/layers/mime-guess/Cargo.toml +3 -2
- data/core/layers/mime-guess/LICENSE +201 -0
- data/core/layers/mime-guess/NOTICE +5 -0
- data/core/layers/mime-guess/README.md +47 -0
- data/core/layers/mime-guess/src/lib.rs +13 -17
- data/core/layers/observe-metrics-common/Cargo.toml +2 -1
- data/core/layers/observe-metrics-common/LICENSE +201 -0
- data/core/layers/observe-metrics-common/NOTICE +5 -0
- data/core/layers/observe-metrics-common/README.md +27 -0
- data/core/layers/observe-metrics-common/src/lib.rs +15 -9
- data/core/layers/otelmetrics/Cargo.toml +4 -3
- data/core/layers/otelmetrics/LICENSE +201 -0
- data/core/layers/otelmetrics/NOTICE +5 -0
- data/core/layers/otelmetrics/README.md +47 -0
- data/core/layers/otelmetrics/src/lib.rs +4 -4
- data/core/layers/oteltrace/Cargo.toml +3 -2
- data/core/layers/oteltrace/LICENSE +201 -0
- data/core/layers/oteltrace/NOTICE +5 -0
- data/core/layers/oteltrace/README.md +48 -0
- data/core/layers/oteltrace/src/lib.rs +13 -4
- data/core/layers/prometheus/Cargo.toml +4 -3
- data/core/layers/prometheus/LICENSE +201 -0
- data/core/layers/prometheus/NOTICE +5 -0
- data/core/layers/prometheus/README.md +47 -0
- data/core/layers/prometheus/src/lib.rs +4 -4
- data/core/layers/prometheus-client/Cargo.toml +4 -3
- data/core/layers/prometheus-client/LICENSE +201 -0
- data/core/layers/prometheus-client/NOTICE +5 -0
- data/core/layers/prometheus-client/README.md +48 -0
- data/core/layers/prometheus-client/src/lib.rs +4 -4
- data/core/layers/retry/Cargo.toml +5 -4
- data/core/layers/retry/LICENSE +201 -0
- data/core/layers/retry/NOTICE +5 -0
- data/core/layers/retry/README.md +50 -0
- data/core/layers/retry/src/lib.rs +6 -7
- data/core/layers/route/Cargo.toml +4 -3
- data/core/layers/route/LICENSE +201 -0
- data/core/layers/route/NOTICE +5 -0
- data/core/layers/route/README.md +58 -0
- data/core/layers/route/src/lib.rs +39 -9
- data/core/layers/tail-cut/Cargo.toml +3 -2
- data/core/layers/tail-cut/LICENSE +201 -0
- data/core/layers/tail-cut/NOTICE +5 -0
- data/core/layers/tail-cut/README.md +47 -0
- data/core/layers/tail-cut/src/lib.rs +7 -9
- data/core/layers/throttle/Cargo.toml +3 -2
- data/core/layers/throttle/LICENSE +201 -0
- data/core/layers/throttle/NOTICE +5 -0
- data/core/layers/throttle/README.md +47 -0
- data/core/layers/throttle/src/lib.rs +5 -7
- data/core/layers/timeout/Cargo.toml +4 -3
- data/core/layers/timeout/LICENSE +201 -0
- data/core/layers/timeout/NOTICE +5 -0
- data/core/layers/timeout/README.md +50 -0
- data/core/layers/timeout/src/lib.rs +9 -10
- data/core/layers/tracing/Cargo.toml +3 -2
- data/core/layers/tracing/LICENSE +201 -0
- data/core/layers/tracing/NOTICE +5 -0
- data/core/layers/tracing/README.md +47 -0
- data/core/layers/tracing/src/lib.rs +4 -4
- data/core/services/aliyun-drive/Cargo.toml +2 -1
- data/core/services/aliyun-drive/LICENSE +201 -0
- data/core/services/aliyun-drive/NOTICE +5 -0
- data/core/services/aliyun-drive/README.md +56 -0
- data/core/services/aliyun-drive/src/backend.rs +2 -2
- data/core/services/aliyun-drive/src/docs.md +7 -9
- data/core/services/aliyun-drive/src/lib.rs +12 -2
- data/core/services/aliyun-drive/src/lister.rs +2 -2
- data/core/services/alluxio/Cargo.toml +2 -1
- data/core/services/alluxio/LICENSE +201 -0
- data/core/services/alluxio/NOTICE +5 -0
- data/core/services/alluxio/README.md +56 -0
- data/core/services/alluxio/src/backend.rs +3 -3
- data/core/services/alluxio/src/docs.md +7 -5
- data/core/services/alluxio/src/lib.rs +12 -2
- data/core/services/azblob/Cargo.toml +6 -5
- data/core/services/azblob/LICENSE +201 -0
- data/core/services/azblob/NOTICE +5 -0
- data/core/services/azblob/README.md +56 -0
- data/core/services/azblob/src/backend.rs +3 -3
- data/core/services/azblob/src/core.rs +3 -3
- data/core/services/azblob/src/docs.md +7 -9
- data/core/services/azblob/src/lib.rs +14 -2
- data/core/services/azdls/Cargo.toml +6 -5
- data/core/services/azdls/LICENSE +201 -0
- data/core/services/azdls/NOTICE +5 -0
- data/core/services/azdls/README.md +56 -0
- data/core/services/azdls/src/backend.rs +3 -3
- data/core/services/azdls/src/docs.md +7 -8
- data/core/services/azdls/src/lib.rs +12 -2
- data/core/services/azdls/src/lister.rs +1 -1
- data/core/services/azfile/Cargo.toml +6 -5
- data/core/services/azfile/LICENSE +201 -0
- data/core/services/azfile/NOTICE +5 -0
- data/core/services/azfile/README.md +56 -0
- data/core/services/azfile/src/backend.rs +2 -2
- data/core/services/azfile/src/docs.md +7 -8
- data/core/services/azfile/src/lib.rs +12 -2
- data/core/services/azure-common/Cargo.toml +2 -1
- data/core/services/azure-common/LICENSE +201 -0
- data/core/services/azure-common/NOTICE +5 -0
- data/core/services/azure-common/README.md +26 -0
- data/core/services/azure-common/src/lib.rs +2 -5
- data/core/services/b2/Cargo.toml +2 -1
- data/core/services/b2/LICENSE +201 -0
- data/core/services/b2/NOTICE +5 -0
- data/core/services/b2/README.md +56 -0
- data/core/services/b2/src/backend.rs +4 -4
- data/core/services/b2/src/docs.md +7 -8
- data/core/services/b2/src/lib.rs +9 -3
- data/core/services/cacache/Cargo.toml +2 -1
- data/core/services/cacache/LICENSE +201 -0
- data/core/services/cacache/NOTICE +5 -0
- data/core/services/cacache/README.md +56 -0
- data/core/services/cacache/src/backend.rs +0 -1
- data/core/services/cacache/src/docs.md +7 -4
- data/core/services/cacache/src/lib.rs +9 -4
- data/core/services/cloudflare-kv/Cargo.toml +2 -1
- data/core/services/cloudflare-kv/LICENSE +201 -0
- data/core/services/cloudflare-kv/NOTICE +5 -0
- data/core/services/cloudflare-kv/README.md +56 -0
- data/core/services/cloudflare-kv/src/backend.rs +0 -2
- data/core/services/cloudflare-kv/src/docs.md +7 -5
- data/core/services/cloudflare-kv/src/lib.rs +9 -3
- data/core/services/compfs/Cargo.toml +2 -1
- data/core/services/compfs/LICENSE +201 -0
- data/core/services/compfs/NOTICE +5 -0
- data/core/services/compfs/README.md +58 -0
- data/core/services/compfs/src/lib.rs +9 -3
- data/core/services/cos/Cargo.toml +5 -4
- data/core/services/cos/LICENSE +201 -0
- data/core/services/cos/NOTICE +5 -0
- data/core/services/cos/README.md +56 -0
- data/core/services/cos/src/backend.rs +4 -4
- data/core/services/cos/src/docs.md +7 -9
- data/core/services/cos/src/lib.rs +12 -2
- data/core/services/d1/Cargo.toml +2 -1
- data/core/services/d1/LICENSE +201 -0
- data/core/services/d1/NOTICE +5 -0
- data/core/services/d1/README.md +56 -0
- data/core/services/d1/src/docs.md +7 -8
- data/core/services/d1/src/lib.rs +9 -3
- data/core/services/dashmap/Cargo.toml +2 -1
- data/core/services/dashmap/LICENSE +201 -0
- data/core/services/dashmap/NOTICE +5 -0
- data/core/services/dashmap/README.md +56 -0
- data/core/services/dashmap/src/backend.rs +1 -2
- data/core/services/dashmap/src/docs.md +7 -4
- data/core/services/dashmap/src/lib.rs +9 -4
- data/core/services/dbfs/Cargo.toml +2 -1
- data/core/services/dbfs/LICENSE +201 -0
- data/core/services/dbfs/NOTICE +5 -0
- data/core/services/dbfs/README.md +56 -0
- data/core/services/dbfs/src/backend.rs +2 -2
- data/core/services/dbfs/src/core.rs +1 -1
- data/core/services/dbfs/src/docs.md +7 -6
- data/core/services/dbfs/src/lib.rs +9 -4
- data/core/services/dbfs/src/lister.rs +1 -1
- data/core/services/dropbox/Cargo.toml +2 -1
- data/core/services/dropbox/LICENSE +201 -0
- data/core/services/dropbox/NOTICE +5 -0
- data/core/services/dropbox/README.md +56 -0
- data/core/services/dropbox/src/docs.md +7 -4
- data/core/services/dropbox/src/lib.rs +9 -4
- data/core/services/etcd/Cargo.toml +2 -1
- data/core/services/etcd/LICENSE +201 -0
- data/core/services/etcd/NOTICE +5 -0
- data/core/services/etcd/README.md +56 -0
- data/core/services/etcd/src/docs.md +7 -10
- data/core/services/etcd/src/lib.rs +9 -4
- data/core/services/foundationdb/Cargo.toml +2 -1
- data/core/services/foundationdb/LICENSE +201 -0
- data/core/services/foundationdb/NOTICE +5 -0
- data/core/services/foundationdb/README.md +56 -0
- data/core/services/foundationdb/src/docs.md +7 -5
- data/core/services/foundationdb/src/lib.rs +9 -4
- data/core/services/foyer/Cargo.toml +4 -3
- data/core/services/foyer/LICENSE +201 -0
- data/core/services/foyer/NOTICE +5 -0
- data/core/services/foyer/README.md +57 -0
- data/core/services/foyer/src/backend.rs +1 -1
- data/core/services/foyer/src/docs.md +12 -1
- data/core/services/foyer/src/lib.rs +9 -11
- data/core/services/fs/Cargo.toml +2 -1
- data/core/services/fs/LICENSE +201 -0
- data/core/services/fs/NOTICE +5 -0
- data/core/services/fs/README.md +56 -0
- data/core/services/fs/src/backend.rs +1 -1
- data/core/services/fs/src/docs.md +7 -5
- data/core/services/fs/src/lib.rs +9 -3
- data/core/services/ftp/Cargo.toml +2 -1
- data/core/services/ftp/LICENSE +201 -0
- data/core/services/ftp/NOTICE +5 -0
- data/core/services/ftp/README.md +56 -0
- data/core/services/ftp/src/backend.rs +1 -1
- data/core/services/ftp/src/docs.md +7 -7
- data/core/services/ftp/src/lib.rs +12 -2
- data/core/services/ftp/src/lister.rs +1 -1
- data/core/services/gcs/Cargo.toml +5 -4
- data/core/services/gcs/LICENSE +201 -0
- data/core/services/gcs/NOTICE +5 -0
- data/core/services/gcs/README.md +56 -0
- data/core/services/gcs/src/core.rs +55 -1
- data/core/services/gcs/src/docs.md +7 -13
- data/core/services/gcs/src/lib.rs +9 -3
- data/core/services/gcs/src/writer.rs +5 -12
- data/core/services/gdrive/Cargo.toml +2 -1
- data/core/services/gdrive/LICENSE +201 -0
- data/core/services/gdrive/NOTICE +5 -0
- data/core/services/gdrive/README.md +56 -0
- data/core/services/gdrive/src/docs.md +8 -5
- data/core/services/gdrive/src/lib.rs +12 -2
- data/core/services/gdrive/src/lister.rs +6 -6
- data/core/services/ghac/Cargo.toml +5 -4
- data/core/services/ghac/LICENSE +201 -0
- data/core/services/ghac/NOTICE +5 -0
- data/core/services/ghac/README.md +56 -0
- data/core/services/ghac/src/docs.md +7 -4
- data/core/services/ghac/src/lib.rs +12 -2
- data/core/services/github/Cargo.toml +2 -1
- data/core/services/github/LICENSE +201 -0
- data/core/services/github/NOTICE +5 -0
- data/core/services/github/README.md +56 -0
- data/core/services/github/src/backend.rs +4 -4
- data/core/services/github/src/docs.md +7 -8
- data/core/services/github/src/lib.rs +12 -2
- data/core/services/goosefs/Cargo.toml +4 -3
- data/core/services/goosefs/LICENSE +201 -0
- data/core/services/goosefs/NOTICE +5 -0
- data/core/services/goosefs/README.md +56 -0
- data/core/services/goosefs/src/backend.rs +31 -12
- data/core/services/goosefs/src/config.rs +1 -1
- data/core/services/goosefs/src/core.rs +72 -25
- data/core/services/goosefs/src/docs.md +10 -10
- data/core/services/goosefs/src/lib.rs +12 -2
- data/core/services/goosefs/src/writer.rs +24 -20
- data/core/services/goosefs/tests/safe_conditional_put.rs +199 -0
- data/core/services/gridfs/Cargo.toml +2 -1
- data/core/services/gridfs/LICENSE +201 -0
- data/core/services/gridfs/NOTICE +5 -0
- data/core/services/gridfs/README.md +56 -0
- data/core/services/gridfs/src/docs.md +7 -6
- data/core/services/gridfs/src/lib.rs +9 -4
- data/core/services/hdfs/Cargo.toml +2 -1
- data/core/services/hdfs/LICENSE +201 -0
- data/core/services/hdfs/NOTICE +5 -0
- data/core/services/hdfs/README.md +58 -0
- data/core/services/hdfs/src/backend.rs +1 -1
- data/core/services/hdfs/src/docs.md +9 -9
- data/core/services/hdfs/src/lib.rs +12 -2
- data/core/services/hdfs-native/Cargo.toml +3 -2
- data/core/services/hdfs-native/LICENSE +201 -0
- data/core/services/hdfs-native/NOTICE +5 -0
- data/core/services/hdfs-native/README.md +56 -0
- data/core/services/hdfs-native/src/backend.rs +3 -2
- data/core/services/hdfs-native/src/docs.md +7 -4
- data/core/services/hdfs-native/src/lib.rs +12 -2
- data/core/services/hdfs-native/src/writer.rs +1 -1
- data/core/services/hf/Cargo.toml +3 -2
- data/core/services/hf/LICENSE +201 -0
- data/core/services/hf/NOTICE +5 -0
- data/core/services/hf/README.md +56 -0
- data/core/services/hf/src/backend.rs +11 -9
- data/core/services/hf/src/config.rs +1 -1
- data/core/services/hf/src/core.rs +12 -12
- data/core/services/hf/src/docs.md +11 -12
- data/core/services/hf/src/lib.rs +13 -3
- data/core/services/hf/src/lister.rs +1 -1
- data/core/services/http/Cargo.toml +4 -3
- data/core/services/http/LICENSE +201 -0
- data/core/services/http/NOTICE +5 -0
- data/core/services/http/README.md +56 -0
- data/core/services/http/src/backend.rs +1 -1
- data/core/services/http/src/docs.md +7 -5
- data/core/services/http/src/lib.rs +10 -4
- data/core/services/ipfs/Cargo.toml +2 -1
- data/core/services/ipfs/LICENSE +201 -0
- data/core/services/ipfs/NOTICE +5 -0
- data/core/services/ipfs/README.md +56 -0
- data/core/services/ipfs/src/backend.rs +2 -2
- data/core/services/ipfs/src/docs.md +7 -5
- data/core/services/ipfs/src/lib.rs +9 -3
- data/core/services/ipmfs/Cargo.toml +2 -1
- data/core/services/ipmfs/LICENSE +201 -0
- data/core/services/ipmfs/NOTICE +5 -0
- data/core/services/ipmfs/README.md +56 -0
- data/core/services/ipmfs/src/docs.md +10 -1
- data/core/services/ipmfs/src/lib.rs +12 -2
- data/core/services/ipmfs/src/lister.rs +2 -2
- data/core/services/koofr/Cargo.toml +2 -1
- data/core/services/koofr/LICENSE +201 -0
- data/core/services/koofr/NOTICE +5 -0
- data/core/services/koofr/README.md +56 -0
- data/core/services/koofr/src/backend.rs +4 -4
- data/core/services/koofr/src/docs.md +7 -7
- data/core/services/koofr/src/lib.rs +12 -2
- data/core/services/lakefs/Cargo.toml +2 -1
- data/core/services/lakefs/LICENSE +201 -0
- data/core/services/lakefs/NOTICE +5 -0
- data/core/services/lakefs/README.md +56 -0
- data/core/services/lakefs/src/backend.rs +5 -5
- data/core/services/lakefs/src/docs.md +7 -9
- data/core/services/lakefs/src/lib.rs +9 -4
- data/core/services/lakefs/src/lister.rs +1 -1
- data/core/services/memcached/Cargo.toml +3 -2
- data/core/services/memcached/LICENSE +201 -0
- data/core/services/memcached/NOTICE +5 -0
- data/core/services/memcached/README.md +56 -0
- data/core/services/memcached/src/docs.md +7 -8
- data/core/services/memcached/src/lib.rs +9 -4
- data/core/services/mini_moka/Cargo.toml +2 -1
- data/core/services/mini_moka/LICENSE +201 -0
- data/core/services/mini_moka/NOTICE +5 -0
- data/core/services/mini_moka/README.md +56 -0
- data/core/services/mini_moka/src/backend.rs +1 -1
- data/core/services/mini_moka/src/docs.md +10 -1
- data/core/services/mini_moka/src/lib.rs +9 -4
- data/core/services/moka/Cargo.toml +2 -1
- data/core/services/moka/LICENSE +201 -0
- data/core/services/moka/NOTICE +5 -0
- data/core/services/moka/README.md +56 -0
- data/core/services/moka/src/backend.rs +1 -2
- data/core/services/moka/src/docs.md +7 -7
- data/core/services/moka/src/lib.rs +9 -3
- data/core/services/mongodb/Cargo.toml +2 -1
- data/core/services/mongodb/LICENSE +201 -0
- data/core/services/mongodb/NOTICE +5 -0
- data/core/services/mongodb/README.md +56 -0
- data/core/services/mongodb/src/docs.md +7 -7
- data/core/services/mongodb/src/lib.rs +12 -2
- data/core/services/monoiofs/Cargo.toml +2 -1
- data/core/services/monoiofs/LICENSE +201 -0
- data/core/services/monoiofs/NOTICE +5 -0
- data/core/services/monoiofs/README.md +58 -0
- data/core/services/monoiofs/src/docs.md +7 -4
- data/core/services/monoiofs/src/lib.rs +9 -4
- data/core/services/mysql/Cargo.toml +2 -1
- data/core/services/mysql/LICENSE +201 -0
- data/core/services/mysql/NOTICE +5 -0
- data/core/services/mysql/README.md +56 -0
- data/core/services/mysql/src/docs.md +7 -6
- data/core/services/mysql/src/lib.rs +12 -2
- data/core/services/obs/Cargo.toml +5 -4
- data/core/services/obs/LICENSE +201 -0
- data/core/services/obs/NOTICE +5 -0
- data/core/services/obs/README.md +56 -0
- data/core/services/obs/src/backend.rs +4 -4
- data/core/services/obs/src/docs.md +7 -9
- data/core/services/obs/src/lib.rs +12 -2
- data/core/services/onedrive/Cargo.toml +2 -1
- data/core/services/onedrive/LICENSE +201 -0
- data/core/services/onedrive/NOTICE +5 -0
- data/core/services/onedrive/README.md +56 -0
- data/core/services/onedrive/src/docs.md +10 -10
- data/core/services/onedrive/src/lib.rs +9 -3
- data/core/services/opfs/Cargo.toml +4 -1
- data/core/services/opfs/LICENSE +201 -0
- data/core/services/opfs/NOTICE +5 -0
- data/core/services/opfs/README.md +63 -0
- data/core/services/opfs/src/core.rs +2 -0
- data/core/services/opfs/src/docs.md +7 -1
- data/core/services/opfs/src/lib.rs +11 -2
- data/core/services/oss/Cargo.toml +5 -4
- data/core/services/oss/LICENSE +201 -0
- data/core/services/oss/NOTICE +5 -0
- data/core/services/oss/README.md +56 -0
- data/core/services/oss/src/backend.rs +4 -4
- data/core/services/oss/src/docs.md +10 -22
- data/core/services/oss/src/lib.rs +9 -3
- data/core/services/pcloud/Cargo.toml +2 -1
- data/core/services/pcloud/LICENSE +201 -0
- data/core/services/pcloud/NOTICE +5 -0
- data/core/services/pcloud/README.md +56 -0
- data/core/services/pcloud/src/backend.rs +3 -3
- data/core/services/pcloud/src/docs.md +7 -7
- data/core/services/pcloud/src/lib.rs +9 -3
- data/core/services/persy/Cargo.toml +2 -1
- data/core/services/persy/LICENSE +201 -0
- data/core/services/persy/NOTICE +5 -0
- data/core/services/persy/README.md +56 -0
- data/core/services/persy/src/backend.rs +0 -1
- data/core/services/persy/src/docs.md +7 -6
- data/core/services/persy/src/lib.rs +9 -3
- data/core/services/postgresql/Cargo.toml +2 -1
- data/core/services/postgresql/LICENSE +201 -0
- data/core/services/postgresql/NOTICE +5 -0
- data/core/services/postgresql/README.md +56 -0
- data/core/services/postgresql/src/docs.md +7 -6
- data/core/services/postgresql/src/lib.rs +12 -2
- data/core/services/redb/Cargo.toml +2 -1
- data/core/services/redb/LICENSE +201 -0
- data/core/services/redb/NOTICE +5 -0
- data/core/services/redb/README.md +56 -0
- data/core/services/redb/src/backend.rs +0 -1
- data/core/services/redb/src/docs.md +7 -5
- data/core/services/redb/src/lib.rs +9 -3
- data/core/services/redis/Cargo.toml +2 -1
- data/core/services/redis/LICENSE +201 -0
- data/core/services/redis/NOTICE +5 -0
- data/core/services/redis/README.md +56 -0
- data/core/services/redis/src/docs.md +7 -9
- data/core/services/redis/src/lib.rs +9 -4
- data/core/services/rocksdb/Cargo.toml +2 -1
- data/core/services/rocksdb/LICENSE +201 -0
- data/core/services/rocksdb/NOTICE +5 -0
- data/core/services/rocksdb/README.md +56 -0
- data/core/services/rocksdb/src/backend.rs +0 -1
- data/core/services/rocksdb/src/docs.md +7 -5
- data/core/services/rocksdb/src/lib.rs +12 -2
- data/core/services/s3/Cargo.toml +5 -4
- data/core/services/s3/LICENSE +201 -0
- data/core/services/s3/NOTICE +5 -0
- data/core/services/s3/README.md +56 -0
- data/core/services/s3/src/backend.rs +60 -7
- data/core/services/s3/src/compatible_services.md +10 -2
- data/core/services/s3/src/core.rs +16 -8
- data/core/services/s3/src/docs.md +7 -28
- data/core/services/s3/src/lib.rs +9 -3
- data/core/services/seafile/Cargo.toml +2 -1
- data/core/services/seafile/LICENSE +201 -0
- data/core/services/seafile/NOTICE +5 -0
- data/core/services/seafile/README.md +56 -0
- data/core/services/seafile/src/backend.rs +3 -3
- data/core/services/seafile/src/docs.md +7 -8
- data/core/services/seafile/src/lib.rs +12 -2
- data/core/services/sftp/Cargo.toml +2 -1
- data/core/services/sftp/LICENSE +201 -0
- data/core/services/sftp/NOTICE +5 -0
- data/core/services/sftp/README.md +56 -0
- data/core/services/sftp/src/backend.rs +2 -2
- data/core/services/sftp/src/docs.md +7 -9
- data/core/services/sftp/src/lib.rs +9 -4
- data/core/services/sled/Cargo.toml +2 -1
- data/core/services/sled/LICENSE +201 -0
- data/core/services/sled/NOTICE +5 -0
- data/core/services/sled/README.md +56 -0
- data/core/services/sled/src/backend.rs +0 -1
- data/core/services/sled/src/docs.md +7 -4
- data/core/services/sled/src/lib.rs +12 -2
- data/core/services/sqlite/Cargo.toml +2 -1
- data/core/services/sqlite/LICENSE +201 -0
- data/core/services/sqlite/NOTICE +5 -0
- data/core/services/sqlite/README.md +56 -0
- data/core/services/sqlite/src/backend.rs +0 -1
- data/core/services/sqlite/src/docs.md +7 -6
- data/core/services/sqlite/src/lib.rs +12 -2
- data/core/services/surrealdb/Cargo.toml +2 -1
- data/core/services/surrealdb/LICENSE +201 -0
- data/core/services/surrealdb/NOTICE +5 -0
- data/core/services/surrealdb/README.md +56 -0
- data/core/services/surrealdb/src/docs.md +8 -10
- data/core/services/surrealdb/src/lib.rs +9 -3
- data/core/services/swift/Cargo.toml +2 -1
- data/core/services/swift/LICENSE +201 -0
- data/core/services/swift/NOTICE +5 -0
- data/core/services/swift/README.md +56 -0
- data/core/services/swift/src/backend.rs +2 -2
- data/core/services/swift/src/core.rs +24 -24
- data/core/services/swift/src/deleter.rs +1 -1
- data/core/services/swift/src/docs.md +7 -6
- data/core/services/swift/src/lib.rs +9 -4
- data/core/services/swift/src/writer.rs +1 -1
- data/core/services/tikv/Cargo.toml +2 -1
- data/core/services/tikv/LICENSE +201 -0
- data/core/services/tikv/NOTICE +5 -0
- data/core/services/tikv/README.md +56 -0
- data/core/services/tikv/src/backend.rs +1 -1
- data/core/services/tikv/src/docs.md +7 -8
- data/core/services/tikv/src/lib.rs +12 -2
- data/core/services/tos/Cargo.toml +5 -4
- data/core/services/tos/LICENSE +201 -0
- data/core/services/tos/NOTICE +5 -0
- data/core/services/tos/README.md +56 -0
- data/core/services/tos/src/docs.md +7 -10
- data/core/services/tos/src/lib.rs +9 -3
- data/core/services/upyun/Cargo.toml +2 -1
- data/core/services/upyun/LICENSE +201 -0
- data/core/services/upyun/NOTICE +5 -0
- data/core/services/upyun/README.md +56 -0
- data/core/services/upyun/src/backend.rs +3 -3
- data/core/services/upyun/src/docs.md +7 -7
- data/core/services/upyun/src/lib.rs +9 -4
- data/core/services/vercel-artifacts/Cargo.toml +2 -1
- data/core/services/vercel-artifacts/LICENSE +201 -0
- data/core/services/vercel-artifacts/NOTICE +5 -0
- data/core/services/vercel-artifacts/README.md +56 -0
- data/core/services/vercel-artifacts/src/docs.md +7 -7
- data/core/services/vercel-artifacts/src/lib.rs +11 -3
- data/core/services/vercel-blob/Cargo.toml +2 -1
- data/core/services/vercel-blob/LICENSE +201 -0
- data/core/services/vercel-blob/NOTICE +5 -0
- data/core/services/vercel-blob/README.md +56 -0
- data/core/services/vercel-blob/src/backend.rs +2 -2
- data/core/services/vercel-blob/src/docs.md +7 -5
- data/core/services/vercel-blob/src/lib.rs +12 -2
- data/core/services/webdav/Cargo.toml +2 -1
- data/core/services/webdav/LICENSE +201 -0
- data/core/services/webdav/NOTICE +5 -0
- data/core/services/webdav/README.md +56 -0
- data/core/services/webdav/src/backend.rs +1 -1
- data/core/services/webdav/src/docs.md +7 -7
- data/core/services/webdav/src/lib.rs +12 -2
- data/core/services/webhdfs/Cargo.toml +2 -1
- data/core/services/webhdfs/LICENSE +201 -0
- data/core/services/webhdfs/NOTICE +5 -0
- data/core/services/webhdfs/README.md +56 -0
- data/core/services/webhdfs/src/docs.md +11 -9
- data/core/services/webhdfs/src/lib.rs +12 -2
- data/core/services/yandex-disk/Cargo.toml +2 -1
- data/core/services/yandex-disk/LICENSE +201 -0
- data/core/services/yandex-disk/NOTICE +5 -0
- data/core/services/yandex-disk/README.md +56 -0
- data/core/services/yandex-disk/src/backend.rs +2 -2
- data/core/services/yandex-disk/src/docs.md +7 -5
- data/core/services/yandex-disk/src/lib.rs +9 -3
- data/core/src/lib.rs +30 -4
- data/core/testkit/Cargo.toml +5 -4
- data/core/testkit/LICENSE +201 -0
- data/core/testkit/NOTICE +5 -0
- data/core/testkit/README.md +25 -0
- data/core/testkit/src/lib.rs +4 -2
- data/core/testkit/src/read.rs +12 -13
- data/core/testkit/src/write.rs +12 -13
- data/core/tests/behavior/async_list.rs +2 -2
- data/core/tests/behavior/async_presign.rs +4 -4
- data/core/tests/behavior/async_stat.rs +1 -1
- data/core/tests/behavior/async_write.rs +1 -1
- data/core/users.md +2 -0
- data/opendal.gemspec +5 -1
- metadata +283 -2
data/core/core/src/lib.rs
CHANGED
|
@@ -18,142 +18,9 @@
|
|
|
18
18
|
#![doc(
|
|
19
19
|
html_logo_url = "https://raw.githubusercontent.com/apache/opendal/main/website/static/img/logo.svg"
|
|
20
20
|
)]
|
|
21
|
+
#![doc = include_str!("../README.md")]
|
|
21
22
|
#![cfg_attr(docsrs, feature(doc_cfg))]
|
|
22
|
-
|
|
23
|
-
//!
|
|
24
|
-
//! OpenDAL's development is guided by its vision of **One Layer, All Storage** and its core principles: **Open Community**, **Solid Foundation**, **Fast Access**, **Object Storage First**, and **Extensible Architecture**. Read the explained vision at [OpenDAL Vision](https://opendal.apache.org/vision).
|
|
25
|
-
//!
|
|
26
|
-
//! # Quick Start
|
|
27
|
-
//!
|
|
28
|
-
//! OpenDAL's API entry points are [`Operator`] and [`blocking::Operator`]. All
|
|
29
|
-
//! public APIs are accessible through the operator. To utilize OpenDAL, you
|
|
30
|
-
//! need to:
|
|
31
|
-
//!
|
|
32
|
-
//! - [Init a service](#init-a-service)
|
|
33
|
-
//! - [Compose layers](#compose-layers)
|
|
34
|
-
//! - [Use operator](#use-operator)
|
|
35
|
-
//!
|
|
36
|
-
//! ## Init a service
|
|
37
|
-
//!
|
|
38
|
-
//! The first step is to pick a service and init it with a builder. All supported
|
|
39
|
-
//! services could be found at [`services`].
|
|
40
|
-
//!
|
|
41
|
-
//! Let's take [`services::Memory`] as an example:
|
|
42
|
-
//!
|
|
43
|
-
//! ```no_run
|
|
44
|
-
//! use opendal_core::services;
|
|
45
|
-
//! use opendal_core::Operator;
|
|
46
|
-
//! use opendal_core::Result;
|
|
47
|
-
//!
|
|
48
|
-
//! fn main() -> Result<()> {
|
|
49
|
-
//! // Pick a builder and configure it.
|
|
50
|
-
//! let builder = services::Memory::default();
|
|
51
|
-
//!
|
|
52
|
-
//! // Init an operator
|
|
53
|
-
//! let op = Operator::new(builder)?;
|
|
54
|
-
//! Ok(())
|
|
55
|
-
//! }
|
|
56
|
-
//! ```
|
|
57
|
-
//!
|
|
58
|
-
//! ## Compose layers
|
|
59
|
-
//!
|
|
60
|
-
//! The next setup is to compose layers. Layers are modules that provide extra
|
|
61
|
-
//! features for every operation. All builtin layers could be found at [`layers`].
|
|
62
|
-
//!
|
|
63
|
-
//! Let's use [`layers::CapabilityOverrideLayer`] and a custom [`HttpTransporter`] as an example.
|
|
64
|
-
//!
|
|
65
|
-
//! ```no_run
|
|
66
|
-
//! use opendal_core::layers::CapabilityOverrideLayer;
|
|
67
|
-
//! use opendal_core::HttpTransporter;
|
|
68
|
-
//! use opendal_core::OperationContext;
|
|
69
|
-
//! use opendal_core::services;
|
|
70
|
-
//! use opendal_core::Operator;
|
|
71
|
-
//! use opendal_core::Result;
|
|
72
|
-
//!
|
|
73
|
-
//! #[tokio::main]
|
|
74
|
-
//! async fn main() -> Result<()> {
|
|
75
|
-
//! // Pick a builder and configure it.
|
|
76
|
-
//! let builder = services::Memory::default();
|
|
77
|
-
//!
|
|
78
|
-
//! // Init an operator
|
|
79
|
-
//! let transport = HttpTransporter::default();
|
|
80
|
-
//! let op = Operator::new(builder)?
|
|
81
|
-
//! // Replace the base HTTP transport.
|
|
82
|
-
//! .with_context(OperationContext::new().with_http_transport(transport))
|
|
83
|
-
//! .layer(CapabilityOverrideLayer::new(|cap| cap));
|
|
84
|
-
//!
|
|
85
|
-
//! Ok(())
|
|
86
|
-
//! }
|
|
87
|
-
//! ```
|
|
88
|
-
//!
|
|
89
|
-
//! ## Use operator
|
|
90
|
-
//!
|
|
91
|
-
//! The final step is to use the operator. OpenDAL supports both async [`Operator`]
|
|
92
|
-
//! and blocking [`blocking::Operator`]. Please pick the one that fits your use case.
|
|
93
|
-
//!
|
|
94
|
-
//! Every Operator API follows a consistent pattern. For example, consider the `read` operation:
|
|
95
|
-
//!
|
|
96
|
-
//! - [`Operator::read`]: Executes a read operation.
|
|
97
|
-
//! - [`Operator::read_with`]: Executes a read operation with additional options using the builder pattern.
|
|
98
|
-
//! - [`Operator::read_options`]: Executes a read operation with extra options provided via a [`options::ReadOptions`] struct.
|
|
99
|
-
//! - [`Operator::reader`]: Creates a reader for streaming data, allowing for flexible access.
|
|
100
|
-
//! - [`Operator::reader_with`]: Creates a reader with advanced options using the builder pattern.
|
|
101
|
-
//! - [`Operator::reader_options`]: Creates a reader with extra options provided via a [`options::ReadOptions`] struct.
|
|
102
|
-
//!
|
|
103
|
-
//! The [`Reader`] created by [`Operator`] supports custom read control methods and can be converted
|
|
104
|
-
//! into [`futures::AsyncRead`] or [`futures::Stream`] for broader ecosystem compatibility.
|
|
105
|
-
//!
|
|
106
|
-
//! ```no_run
|
|
107
|
-
//! use opendal_core::options;
|
|
108
|
-
//! use opendal_core::HttpTransporter;
|
|
109
|
-
//! use opendal_core::OperationContext;
|
|
110
|
-
//! use opendal_core::services;
|
|
111
|
-
//! use opendal_core::Operator;
|
|
112
|
-
//! use opendal_core::Result;
|
|
113
|
-
//!
|
|
114
|
-
//! #[tokio::main]
|
|
115
|
-
//! async fn main() -> Result<()> {
|
|
116
|
-
//! // Pick a builder and configure it.
|
|
117
|
-
//! let builder = services::Memory::default();
|
|
118
|
-
//!
|
|
119
|
-
//! // Init an operator
|
|
120
|
-
//! let transport = HttpTransporter::default();
|
|
121
|
-
//! let op = Operator::new(builder)?
|
|
122
|
-
//! // Replace the base HTTP transport.
|
|
123
|
-
//! .with_context(OperationContext::new().with_http_transport(transport));
|
|
124
|
-
//!
|
|
125
|
-
//! // Fetch this file's metadata
|
|
126
|
-
//! let meta = op.stat("hello.txt").await?;
|
|
127
|
-
//! let length = meta.content_length();
|
|
128
|
-
//!
|
|
129
|
-
//! // Read data from `hello.txt` with options.
|
|
130
|
-
//! let bs = op
|
|
131
|
-
//! .read_with("hello.txt")
|
|
132
|
-
//! .range(0..8 * 1024 * 1024)
|
|
133
|
-
//! .chunk(1024 * 1024)
|
|
134
|
-
//! .concurrent(4)
|
|
135
|
-
//! .await?;
|
|
136
|
-
//!
|
|
137
|
-
//! // The same to:
|
|
138
|
-
//! let bs = op
|
|
139
|
-
//! .read_options("hello.txt", options::ReadOptions {
|
|
140
|
-
//! range: (0..8 * 1024 * 1024).into(),
|
|
141
|
-
//! chunk: Some(1024 * 1024),
|
|
142
|
-
//! concurrent: 4,
|
|
143
|
-
//! ..Default::default()
|
|
144
|
-
//! })
|
|
145
|
-
//! .await?;
|
|
146
|
-
//!
|
|
147
|
-
//! Ok(())
|
|
148
|
-
//! }
|
|
149
|
-
//! ```
|
|
150
|
-
//!
|
|
151
|
-
//! # Useful Links
|
|
152
|
-
//!
|
|
153
|
-
//! - [Concept][crate::docs::concepts]
|
|
154
|
-
//! - [Internals][crate::docs::internals]
|
|
155
|
-
//! - [Performance Guide][crate::docs::performance]
|
|
156
|
-
|
|
23
|
+
#![cfg_attr(docsrs, doc(auto_cfg))]
|
|
157
24
|
// Make sure all our public APIs have docs.
|
|
158
25
|
#![deny(missing_docs)]
|
|
159
26
|
|
|
@@ -164,8 +31,6 @@ pub use types::*;
|
|
|
164
31
|
// Public modules, they will be accessed like `opendal::layers::Xxxx`
|
|
165
32
|
#[cfg(feature = "blocking")]
|
|
166
33
|
pub mod blocking;
|
|
167
|
-
#[cfg(docsrs)]
|
|
168
|
-
pub mod docs;
|
|
169
34
|
pub mod layers;
|
|
170
35
|
pub mod raw;
|
|
171
36
|
pub mod services;
|
|
@@ -22,10 +22,10 @@ use std::sync::Arc;
|
|
|
22
22
|
use crate::raw::*;
|
|
23
23
|
use crate::*;
|
|
24
24
|
|
|
25
|
-
/// Immutable identity
|
|
25
|
+
/// Immutable identity and configuration for a storage service.
|
|
26
26
|
///
|
|
27
|
-
///
|
|
28
|
-
/// layers can replace them without mutating shared service identity.
|
|
27
|
+
/// `ServiceInfo` excludes runtime resources and composed capabilities so that
|
|
28
|
+
/// layers can replace them without mutating the shared service identity.
|
|
29
29
|
#[derive(Clone, PartialEq, Eq, Hash)]
|
|
30
30
|
pub struct ServiceInfo {
|
|
31
31
|
scheme: &'static str,
|
|
@@ -44,7 +44,7 @@ impl Debug for ServiceInfo {
|
|
|
44
44
|
}
|
|
45
45
|
|
|
46
46
|
impl ServiceInfo {
|
|
47
|
-
/// Create a new
|
|
47
|
+
/// Create a new `ServiceInfo`.
|
|
48
48
|
pub fn new(scheme: &'static str, root: impl AsRef<str>, name: impl AsRef<str>) -> Self {
|
|
49
49
|
Self {
|
|
50
50
|
scheme,
|
|
@@ -53,12 +53,12 @@ impl ServiceInfo {
|
|
|
53
53
|
}
|
|
54
54
|
}
|
|
55
55
|
|
|
56
|
-
/// Create a new
|
|
56
|
+
/// Create a new `ServiceInfo` with only scheme.
|
|
57
57
|
pub fn with_scheme(scheme: &'static str) -> Self {
|
|
58
58
|
Self::new(scheme, "", "")
|
|
59
59
|
}
|
|
60
60
|
|
|
61
|
-
/// Return a copy of this
|
|
61
|
+
/// Return a copy of this `ServiceInfo` with a different root.
|
|
62
62
|
pub fn with_root(&self, root: impl AsRef<str>) -> Self {
|
|
63
63
|
Self {
|
|
64
64
|
scheme: self.scheme,
|
|
@@ -67,17 +67,17 @@ impl ServiceInfo {
|
|
|
67
67
|
}
|
|
68
68
|
}
|
|
69
69
|
|
|
70
|
-
/// Scheme of
|
|
70
|
+
/// Scheme of the service.
|
|
71
71
|
pub fn scheme(&self) -> &'static str {
|
|
72
72
|
self.scheme
|
|
73
73
|
}
|
|
74
74
|
|
|
75
|
-
/// Root of
|
|
75
|
+
/// Root of the service. Follows a format like `/path/to/dir/`.
|
|
76
76
|
pub fn root(&self) -> Arc<str> {
|
|
77
77
|
self.root.clone()
|
|
78
78
|
}
|
|
79
79
|
|
|
80
|
-
/// Name of
|
|
80
|
+
/// Name of the service. This might be empty if the service has no namespace concept.
|
|
81
81
|
///
|
|
82
82
|
/// For example:
|
|
83
83
|
///
|
|
@@ -90,18 +90,19 @@ impl ServiceInfo {
|
|
|
90
90
|
}
|
|
91
91
|
}
|
|
92
92
|
|
|
93
|
-
///
|
|
93
|
+
/// Foundational trait for storage services.
|
|
94
94
|
///
|
|
95
|
-
/// Every storage backend
|
|
96
|
-
/// must implement every operation
|
|
97
|
-
///
|
|
95
|
+
/// Every storage service (or backend) in OpenDAL implements [`Service`]. Services
|
|
96
|
+
/// and layers must implement every operation in this trait and declare their
|
|
97
|
+
/// capabilities. This allows callers to detect unsupported operations.
|
|
98
98
|
///
|
|
99
99
|
/// # Operations
|
|
100
100
|
///
|
|
101
|
-
/// -
|
|
102
|
-
///
|
|
103
|
-
/// -
|
|
104
|
-
/// -
|
|
101
|
+
/// - An operator normalizes paths before passing them to a `Service`. Relative to
|
|
102
|
+
/// the configured `root`:
|
|
103
|
+
/// - `/` represents the root.
|
|
104
|
+
/// - A path ending with `/` represents a directory.
|
|
105
|
+
/// - Any other path represents a file.
|
|
105
106
|
/// - Services report their supported operation set through [`Service::capability`].
|
|
106
107
|
/// - The [`OperationContext`] carries layer-composed runtime resources for each
|
|
107
108
|
/// operation.
|
|
@@ -117,13 +118,14 @@ pub trait Service: Send + Sync + Debug + Unpin + 'static {
|
|
|
117
118
|
/// Copier returned by `copy`.
|
|
118
119
|
type Copier: oio::Copy;
|
|
119
120
|
|
|
120
|
-
/// Return immutable identity
|
|
121
|
+
/// Return the immutable identity and configuration for this service.
|
|
121
122
|
fn info(&self) -> ServiceInfo;
|
|
122
123
|
|
|
123
124
|
/// Return the capability of this service stack.
|
|
124
125
|
///
|
|
125
|
-
/// Layers may
|
|
126
|
-
/// the current stack instead of assuming the backend's native
|
|
126
|
+
/// Layers may affect a service's capabilities, so callers should use this
|
|
127
|
+
/// value for the current stack instead of assuming the backend's native
|
|
128
|
+
/// capability.
|
|
127
129
|
fn capability(&self) -> Capability;
|
|
128
130
|
|
|
129
131
|
/// Invoke the `create` operation on the specified path.
|
|
@@ -411,7 +413,7 @@ impl<S: Service + ?Sized> ServiceDyn for S {
|
|
|
411
413
|
}
|
|
412
414
|
}
|
|
413
415
|
|
|
414
|
-
/// Service
|
|
416
|
+
/// Implement `Service` for type-erased services so they use the same API.
|
|
415
417
|
impl<T: ServiceDyn + ?Sized> Service for Arc<T> {
|
|
416
418
|
type Reader = oio::Reader;
|
|
417
419
|
type Writer = oio::Writer;
|
|
@@ -24,8 +24,10 @@ use crate::*;
|
|
|
24
24
|
|
|
25
25
|
/// QueueBuf is a queue of [`Buffer`].
|
|
26
26
|
///
|
|
27
|
-
///
|
|
28
|
-
///
|
|
27
|
+
/// QueueBuf allows:
|
|
28
|
+
///
|
|
29
|
+
/// - Storing multiple buffers without copying bytes.
|
|
30
|
+
/// - Consuming buffers in order.
|
|
29
31
|
///
|
|
30
32
|
/// QueueBuf mainly provides the following operations:
|
|
31
33
|
///
|
|
@@ -58,11 +58,12 @@ use crate::*;
|
|
|
58
58
|
/// - Block ID is generated by caller `BlockWrite` instead of services.
|
|
59
59
|
/// - Complete block by an ordered block id list.
|
|
60
60
|
pub trait BlockWrite: Send + Sync + Unpin + 'static {
|
|
61
|
-
/// write_once
|
|
61
|
+
/// `write_once` writes all data to storage in a single operation.
|
|
62
62
|
///
|
|
63
63
|
/// BlockWriter will call this API when:
|
|
64
64
|
///
|
|
65
|
-
/// -
|
|
65
|
+
/// - The buffer contains all data, so `BlockWriter` can upload it in one
|
|
66
|
+
/// operation, for example, in a single network request.
|
|
66
67
|
fn write_once(
|
|
67
68
|
&self,
|
|
68
69
|
size: u64,
|
|
@@ -18,13 +18,13 @@
|
|
|
18
18
|
use std::fmt::Display;
|
|
19
19
|
use std::fmt::Formatter;
|
|
20
20
|
|
|
21
|
-
///
|
|
21
|
+
/// Identifies the operation being performed.
|
|
22
22
|
///
|
|
23
|
-
/// Most
|
|
24
|
-
///
|
|
23
|
+
/// Most variants map to methods on the `Access` trait, although some names
|
|
24
|
+
/// differ to improve readability.
|
|
25
25
|
///
|
|
26
|
-
///
|
|
27
|
-
/// storage
|
|
26
|
+
/// An operation might have different meanings and costs depending on a
|
|
27
|
+
/// storage service.
|
|
28
28
|
#[derive(Debug, Copy, Clone, Hash, Eq, PartialEq, Default)]
|
|
29
29
|
#[non_exhaustive]
|
|
30
30
|
pub enum Operation {
|