nodedb_types/sync/wire/mod.rs
1// SPDX-License-Identifier: Apache-2.0
2
3//! Sync wire protocol: frame format and message types.
4//!
5//! Frame format: `[msg_type: 1B][length: 4B LE][rkyv/msgpack body]`
6//!
7//! Message types:
8//! - `0x01` Handshake (client → server)
9//! - `0x02` HandshakeAck (server → client)
10//! - `0x10` DeltaPush (client → server)
11//! - `0x11` DeltaAck (server → client)
12//! - `0x12` DeltaReject (server → client)
13//! - `0x14` CollectionPurged (server → client)
14//! - `0x20` ShapeSubscribe (client → server)
15//! - `0x21` ShapeSnapshot (server → client)
16//! - `0x22` ShapeDelta (server → client)
17//! - `0x23` ShapeUnsubscribe (client → server)
18//! - `0x30` VectorClockSync (bidirectional)
19//! - `0x40` TimeseriesPush (client → server)
20//! - `0x41` TimeseriesAck (server → client)
21//! - `0x50` ResyncRequest (bidirectional)
22//! - `0x52` Throttle (client → server)
23//! - `0x60` TokenRefresh (client → server)
24//! - `0x61` TokenRefreshAck (server → client)
25//! - `0x70` DefinitionSync (server → client)
26//! - `0x80` PresenceUpdate (client → server)
27//! - `0x81` PresenceBroadcast (server → all subscribers)
28//! - `0x82` PresenceLeave (server → all subscribers)
29//! - `0x90` ArrayDelta (client → server)
30//! - `0x91` ArrayDeltaBatch (client → server)
31//! - `0x92` ArraySnapshot (server → client)
32//! - `0x93` ArraySnapshotChunk (server → client)
33//! - `0x94` ArraySchema (bidirectional)
34//! - `0x95` ArrayAck (client → server)
35//! - `0x96` ArrayReject (server → client)
36//! - `0x97` ArrayCatchupRequest (client → server)
37//! - `0xFF` Ping/Pong (bidirectional)
38
39pub mod array;
40pub mod delta;
41pub mod frame;
42pub mod presence;
43pub mod resync;
44pub mod session;
45pub mod shape;
46pub mod timeseries;
47
48#[cfg(test)]
49mod tests;
50
51pub use array::{
52 ArrayAckMsg, ArrayCatchupRequestMsg, ArrayDeltaBatchMsg, ArrayDeltaMsg, ArrayRejectMsg,
53 ArrayRejectReason, ArraySchemaSyncMsg, ArraySnapshotChunkMsg, ArraySnapshotMsg,
54};
55pub use delta::{CollectionPurgedMsg, DeltaAckMsg, DeltaPushMsg, DeltaRejectMsg};
56pub use frame::{SyncFrame, SyncMessageType};
57pub use presence::{PeerPresence, PresenceBroadcastMsg, PresenceLeaveMsg, PresenceUpdateMsg};
58pub use resync::{ResyncReason, ResyncRequestMsg, ThrottleMsg};
59pub use session::{
60 HandshakeAckMsg, HandshakeMsg, PingPongMsg, TokenRefreshAckMsg, TokenRefreshMsg,
61};
62pub use shape::{
63 ShapeDeltaMsg, ShapeSnapshotMsg, ShapeSubscribeMsg, ShapeUnsubscribeMsg, VectorClockSyncMsg,
64};
65pub use timeseries::{DefinitionSyncMsg, TimeseriesAckMsg, TimeseriesPushMsg};