diff options
| author | 魏曹先生 <1992414357@qq.com> | 2026-06-18 04:40:25 +0800 |
|---|---|---|
| committer | 魏曹先生 <1992414357@qq.com> | 2026-06-18 04:40:25 +0800 |
| commit | 7879ac01b24eb9723ec0a814adaee1fc9c52610a (patch) | |
| tree | d1c9a07e3ef8819869494c45e96bcd3e98856bdb /rola-bucket | |
| parent | 0b8e6e7d18abb94bd99553dc1d2b0ba5d4f265ea (diff) | |
feat(rola-cli): implement bucket creation and CLI entry point
Add bucket creation logic with pre-checks, localized error handling, and
a basic CLI entry point using the mingling framework. Introduce a
placeholder protocol for bucket transfer testing.
Diffstat (limited to 'rola-bucket')
| -rw-r--r-- | rola-bucket/src/protocol.rs | 3 | ||||
| -rw-r--r-- | rola-bucket/src/protocol/placeholder.rs | 45 |
2 files changed, 48 insertions, 0 deletions
diff --git a/rola-bucket/src/protocol.rs b/rola-bucket/src/protocol.rs index 5523176..ba50a42 100644 --- a/rola-bucket/src/protocol.rs +++ b/rola-bucket/src/protocol.rs @@ -8,6 +8,9 @@ pub use error::*; mod local_fs; pub use local_fs::*; +mod placeholder; +pub use placeholder::*; + /// Request used in [BucketTransferProtocol] or [AsyncBucketTransferProtocol] pub struct UploadToBucketRequest<'a, ExtraInfo> where diff --git a/rola-bucket/src/protocol/placeholder.rs b/rola-bucket/src/protocol/placeholder.rs new file mode 100644 index 0000000..6fd5a10 --- /dev/null +++ b/rola-bucket/src/protocol/placeholder.rs @@ -0,0 +1,45 @@ +use crate::BucketTransferProtocol; + +/// A placeholder implementation of the bucket transfer protocol. +/// +/// This struct serves as a temporary or stub implementation of +/// [`BucketTransferProtocol`], intended for use in contexts where +/// actual data transfer is not required (e.g., testing, scaffolding, +/// or as a default before a real implementation is provided). +/// +/// Calling any of the transfer methods on this implementation will +/// result in a panic with `unreachable!()`, signaling that the +/// placeholder should be replaced before use. +pub struct NoProtocol; + +impl BucketTransferProtocol for NoProtocol { + type ExtraInfo = (); + + fn upload_to_bucket( + &self, + _req: &super::UploadToBucketRequest<Self::ExtraInfo>, + ) -> Result<(), super::BucketTransferProtocolError> { + unreachable!() + } + + fn download_from_bucket( + &self, + _req: &super::DownloadFromBucketRequest<Self::ExtraInfo>, + ) -> Result<(), super::BucketTransferProtocolError> { + unreachable!() + } + + fn transfer_to_client( + &self, + _req: &super::TransferToClientRequest<Self::ExtraInfo>, + ) -> Result<(), super::BucketTransferProtocolError> { + unreachable!() + } + + fn receive_from_client( + &self, + _req: &super::ReceiveFromClientRequest<Self::ExtraInfo>, + ) -> Result<(), super::BucketTransferProtocolError> { + unreachable!() + } +} |
