transferred_files/formats/
mod.rs1use async_trait::async_trait;
6use tokio::io::{AsyncRead, AsyncSeek, AsyncWrite};
7use transferred_core::{BatchStream, TransferredError};
8
9pub mod parquet;
10
11pub use parquet::Parquet;
12
13pub trait FileReader: AsyncRead + AsyncSeek + Send + Unpin {}
15impl<T: AsyncRead + AsyncSeek + Send + Unpin> FileReader for T {}
16
17pub trait FileWriter: AsyncWrite + Send + Unpin {}
19impl<T: AsyncWrite + Send + Unpin> FileWriter for T {}
20
21#[async_trait]
23pub trait FormatRead: Send + Sync {
24 async fn read(&self, reader: Box<dyn FileReader>) -> Result<BatchStream, TransferredError>;
26}
27
28#[async_trait]
30pub trait FormatWrite: Send + Sync {
31 fn file_extension(&self) -> &'static str;
33
34 async fn write(
36 &self,
37 writer: Box<dyn FileWriter>,
38 batches: BatchStream,
39 ) -> Result<u64, TransferredError>;
40}