Skip to main content

reddb_server/wire/redwire/
mod.rs

1//! RedWire — RedDB's binary TCP / TLS wire protocol with auth
2//! handshake, multiplex, compression, and version negotiation.
3//!
4//! See `.red/adr/0001-redwire-tcp-protocol.md`. The protocol is
5//! gated on a `0xFE` startup magic byte so the listener can share
6//! a port with HTTP and gRPC behind the service router.
7//!
8//! Layered API:
9//!   - `frame`  — frame struct + MessageKind + flags
10//!   - `codec`  — encode/decode (16-byte header + payload)
11//!   - `auth`   — handshake state machine
12//!   - `session` — per-connection dispatch loop
13//!   - `listener` — TCP / TLS / Unix accept
14
15pub mod auth;
16pub mod codec;
17pub mod frame;
18pub mod input_stream;
19pub mod listener;
20pub mod output_stream;
21pub mod session;
22
23pub use codec::{decode_frame, encode_frame, FrameError};
24pub use frame::{Flags, Frame, MessageKind, FRAME_HEADER_SIZE, MAX_FRAME_SIZE};
25#[cfg(unix)]
26pub use listener::start_redwire_unix_listener;
27pub use listener::{
28    start_redwire_listener, start_redwire_listener_on, start_redwire_tls_listener, RedWireConfig,
29};
30
31// Constants live in the shared `reddb-wire` crate; re-exported here
32// so existing `crate::wire::redwire::REDWIRE_MAGIC` paths continue
33// to resolve.
34pub use reddb_wire::redwire::{DEFAULT_REDWIRE_PORT, MAX_KNOWN_MINOR_VERSION, REDWIRE_MAGIC};
35
36// FrameBuilder owns server-side frame-construction discipline (see
37// `crates/reddb-wire/src/redwire/builder.rs`). Re-exported here so
38// dispatch sites can `use crate::wire::redwire::FrameBuilder`.
39pub use reddb_wire::redwire::{BuildError, FrameBuilder};