datum-core 0.9.0

Rust stream-processing library mirroring Akka/Pekko Streams Typed, built on Ractor actors
Documentation
//! Streaming I/O — file and TCP sources/sinks, byte framing, compression, and `std::io` bridges.
//!
//! All operators here speak `Vec<u8>` chunks and compose with the linear `Source`/`Flow`/`Sink`
//! DSL. The surface is:
//!
//! - **File I/O** — synchronous [`FileIO`] (on the Datum thread pool) and Tokio-backed
//!   [`TokioFileIO`]; optional io_uring-backed `UringFileIO` behind the `io-uring-file` feature.
//! - **TCP** — [`TokioTcp`] server ([`TokioTcp::bind`]) and client
//!   ([`TokioTcp::outgoing_connection`]) byte streams. TLS, UDP, and QUIC live in `datum-net`.
//! - **Framing** — [`Framing`]: delimiter, length-field, and JSON-object framing.
//! - **Compression** — [`Compression`]: gzip/gunzip and deflate/inflate, in-process via `flate2`.
//! - **`std::io` bridges** — [`StreamConverters`] adapts blocking `std::io::Read`/`Write` to/from
//!   Datum streams, and materializes blocking [`InputStreamHandle`]/[`OutputStreamHandle`] handles.
//!
//! See `io/AGENTS.md` for invariants, hot paths, and the Akka mapping.

mod adapters;
mod compression;
mod framing;
mod tokio_io;

pub use adapters::{FileIO, InputStreamHandle, OutputStreamHandle, StreamConverters};
pub use compression::Compression;
pub use framing::{Framing, FramingByteOrder};
#[cfg(feature = "io-uring-file")]
pub use tokio_io::UringFileIO;
pub use tokio_io::{
    IoResult, TcpBinding, TcpConnection, TcpIncomingConnection, TokioByteSink, TokioByteSource,
    TokioFileIO, TokioTcp,
};