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};