1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
//! I/O modules: block-level streaming and high-level file read/write over gRPC.
//!
//! This module provides two layers of abstraction:
//!
//! ## Low-level: Block-level streaming I/O
//!
//! - [`GrpcBlockReader`] — Bidirectional streaming reader for a single block
//! - [`GrpcBlockWriter`] — Bidirectional streaming writer for a single block
//!
//! These are the building blocks that directly wrap the gRPC `ReadBlock` /
//! `WriteBlock` RPCs.
//!
//! ## High-level: File-level I/O (recommended)
//!
//! - [`GoosefsFileReader`] — Orchestrates the full read pipeline (sequential,
//! block-by-block).
//! - [`GoosefsFileInStream`] — Seekable dual-path file stream: supports
//! sequential reads, `seek`, and positioned random reads (`read_at`).
//! - [`GoosefsFileWriter`] — Orchestrates the full write pipeline.
//!
//! The high-level APIs are the recommended entry point for most users.
//!
//! ## Trait-style adapter
//!
//! - [`GoosefsAsyncReader`] — `tokio::io::AsyncRead + AsyncSeek` adapter
//! over [`GoosefsFileInStream`]. Use it when you want to plug a Goosefs
//! stream into ecosystem tools that take any `AsyncRead` (e.g.
//! `tokio::io::copy`, `tokio::io::BufReader`, `tokio_util::io::ReaderStream`,
//! the future opendal `goosefs` adapter, JNI / C bindings).
pub
pub use GoosefsAsyncReader;
pub use GoosefsFileInStream;
pub use GoosefsFileReader;
pub use GoosefsFileWriter;
pub use GrpcBlockReader;
pub use GrpcBlockWriter;