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 `docs/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 listener;
19pub mod session;
20
21pub use codec::{decode_frame, encode_frame, FrameError};
22pub use frame::{Flags, Frame, MessageKind, FRAME_HEADER_SIZE, MAX_FRAME_SIZE};
23#[cfg(unix)]
24pub use listener::start_redwire_unix_listener;
25pub use listener::{
26    start_redwire_listener, start_redwire_listener_on, start_redwire_tls_listener, RedWireConfig,
27};
28
29// Constants live in the shared `reddb-wire` crate; re-exported here
30// so existing `crate::wire::redwire::REDWIRE_MAGIC` paths continue
31// to resolve.
32pub use reddb_wire::redwire::{DEFAULT_REDWIRE_PORT, MAX_KNOWN_MINOR_VERSION, REDWIRE_MAGIC};
33
34// FrameBuilder owns server-side frame-construction discipline (see
35// `crates/reddb-wire/src/redwire/builder.rs`). Re-exported here so
36// dispatch sites can `use crate::wire::redwire::FrameBuilder`.
37pub use reddb_wire::redwire::{BuildError, FrameBuilder};