nodedb_types/sync/wire/mod.rs
1//! Sync wire protocol: frame format and message types.
2//!
3//! Frame format: `[msg_type: 1B][length: 4B LE][rkyv/msgpack body]`
4//!
5//! Message types:
6//! - `0x01` Handshake (client → server)
7//! - `0x02` HandshakeAck (server → client)
8//! - `0x10` DeltaPush (client → server)
9//! - `0x11` DeltaAck (server → client)
10//! - `0x12` DeltaReject (server → client)
11//! - `0x14` CollectionPurged (server → client)
12//! - `0x20` ShapeSubscribe (client → server)
13//! - `0x21` ShapeSnapshot (server → client)
14//! - `0x22` ShapeDelta (server → client)
15//! - `0x23` ShapeUnsubscribe (client → server)
16//! - `0x30` VectorClockSync (bidirectional)
17//! - `0x40` TimeseriesPush (client → server)
18//! - `0x41` TimeseriesAck (server → client)
19//! - `0x50` ResyncRequest (bidirectional)
20//! - `0x52` Throttle (client → server)
21//! - `0x60` TokenRefresh (client → server)
22//! - `0x61` TokenRefreshAck (server → client)
23//! - `0x70` DefinitionSync (server → client)
24//! - `0x80` PresenceUpdate (client → server)
25//! - `0x81` PresenceBroadcast (server → all subscribers)
26//! - `0x82` PresenceLeave (server → all subscribers)
27//! - `0xFF` Ping/Pong (bidirectional)
28
29pub mod delta;
30pub mod frame;
31pub mod presence;
32pub mod resync;
33pub mod session;
34pub mod shape;
35pub mod timeseries;
36
37#[cfg(test)]
38mod tests;
39
40pub use delta::{CollectionPurgedMsg, DeltaAckMsg, DeltaPushMsg, DeltaRejectMsg};
41pub use frame::{SyncFrame, SyncMessageType};
42pub use presence::{PeerPresence, PresenceBroadcastMsg, PresenceLeaveMsg, PresenceUpdateMsg};
43pub use resync::{ResyncReason, ResyncRequestMsg, ThrottleMsg};
44pub use session::{
45 HandshakeAckMsg, HandshakeMsg, PingPongMsg, TokenRefreshAckMsg, TokenRefreshMsg,
46};
47pub use shape::{
48 ShapeDeltaMsg, ShapeSnapshotMsg, ShapeSubscribeMsg, ShapeUnsubscribeMsg, VectorClockSyncMsg,
49};
50pub use timeseries::{DefinitionSyncMsg, TimeseriesAckMsg, TimeseriesPushMsg};