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//! - `0x13` CollectionSchema (bidirectional)
14//! - `0x14` CollectionPurged (server → client)
15//! - `0x15` RowPush (server → client)
16//! - `0x16` RowPushReject (client → server)
17//! - `0x20` ShapeSubscribe (client → server)
18//! - `0x21` ShapeSnapshot (server → client)
19//! - `0x22` ShapeDelta (server → client)
20//! - `0x23` ShapeUnsubscribe (client → server)
21//! - `0x30` VectorClockSync (bidirectional)
22//! - `0x40` TimeseriesPush (client → server)
23//! - `0x41` TimeseriesAck (server → client)
24//! - `0x50` ResyncRequest (bidirectional)
25//! - `0x52` Throttle (client → server)
26//! - `0x60` TokenRefresh (client → server)
27//! - `0x61` TokenRefreshAck (server → client)
28//! - `0x70` DefinitionSync (server → client)
29//! - `0x80` PresenceUpdate (client → server)
30//! - `0x81` PresenceBroadcast (server → all subscribers)
31//! - `0x82` PresenceLeave (server → all subscribers)
32//! - `0x90` ArrayDelta (client → server)
33//! - `0x91` ArrayDeltaBatch (client → server)
34//! - `0x92` ArraySnapshot (server → client)
35//! - `0x93` ArraySnapshotChunk (server → client)
36//! - `0x94` ArraySchema (bidirectional)
37//! - `0x95` ArrayAck (client → server)
38//! - `0x96` ArrayReject (server → client)
39//! - `0x97` ArrayCatchupRequest (client → server)
40//! - `0x98` ArrayOpResults (server → client)
41//! - `0x99` ArrayAdvisoryRefused (server → client)
42//! - `0xA0` ColumnarInsert (client → server)
43//! - `0xA1` ColumnarInsertAck (server → client)
44//! - `0xA2` VectorInsert (client → server)
45//! - `0xA3` VectorInsertAck (server → client)
46//! - `0xA4` VectorDelete (client → server)
47//! - `0xA5` VectorDeleteAck (server → client)
48//! - `0xA6` FtsIndex (client → server)
49//! - `0xA7` FtsIndexAck (server → client)
50//! - `0xA8` FtsDelete (client → server)
51//! - `0xA9` FtsDeleteAck (server → client)
52//! - `0xAA` SpatialInsert (client → server)
53//! - `0xAB` SpatialInsertAck (server → client)
54//! - `0xAC` SpatialDelete (client → server)
55//! - `0xAD` SpatialDeleteAck (server → client)
56//! - `0xAE` KvPush (client → server)
57//! - `0xAF` KvPushAck (server → client)
58//! - `0xFF` Ping/Pong (bidirectional)
59
60pub mod ack_result;
61pub mod ack_status;
62pub mod array;
63pub mod collection_schema;
64pub mod columnar;
65pub mod delta;
66pub mod frame;
67pub mod fts;
68pub mod kv;
69pub mod presence;
70pub mod provenance;
71pub mod resync;
72pub mod session;
73pub mod shape;
74pub mod spatial;
75pub mod stream_id;
76pub mod timeseries;
77pub mod vector;
78
79pub use ack_result::{SyncAckResult, SyncOutcome};
80pub use ack_status::AckStatus;
81pub use array::{
82 ArrayAckMsg, ArrayAdvisoryKind, ArrayAdvisoryRefusedMsg, ArrayCatchupRequestMsg,
83 ArrayDeltaBatchMsg, ArrayDeltaMsg, ArrayOpOutcome, ArrayOpResult, ArrayOpResultsMsg,
84 ArrayRejectClass, ArrayRejectMsg, ArrayRejectReason, ArraySchemaSyncMsg, ArraySnapshotChunkMsg,
85 ArraySnapshotMsg,
86};
87pub use collection_schema::{CollectionDescriptor, CollectionSchemaSyncMsg};
88pub use columnar::{ColumnarInsertAckMsg, ColumnarInsertMsg};
89pub use delta::{
90 CollectionPurgedMsg, DeltaAckMsg, DeltaPushMsg, DeltaRejectMsg, RowOp, RowPushMsg,
91};
92pub use frame::{SyncFrame, SyncMessageType};
93pub use fts::{FtsDeleteAckMsg, FtsDeleteMsg, FtsIndexAckMsg, FtsIndexMsg};
94pub use kv::{KvPushAckMsg, KvPushMsg, KvPushOp, RowPushRefusal, RowPushRejectMsg};
95pub use presence::{PeerPresence, PresenceBroadcastMsg, PresenceLeaveMsg, PresenceUpdateMsg};
96pub use provenance::SyncProvenance;
97pub use resync::{ResyncReason, ResyncRequestMsg, ThrottleMsg};
98pub use session::{
99 HandshakeAckMsg, HandshakeMsg, PingPongMsg, TokenRefreshAckMsg, TokenRefreshMsg,
100};
101pub use shape::{
102 ShapeDeltaMsg, ShapeSnapshotMsg, ShapeSubscribeMsg, ShapeUnsubscribeMsg, VectorClockSyncMsg,
103};
104pub use spatial::{SpatialDeleteAckMsg, SpatialDeleteMsg, SpatialInsertAckMsg, SpatialInsertMsg};
105pub use stream_id::{EngineKind, stream_id_for};
106pub use timeseries::{DefinitionSyncMsg, TimeseriesAckMsg, TimeseriesPushMsg};
107pub use vector::{VectorDeleteAckMsg, VectorDeleteMsg, VectorInsertAckMsg, VectorInsertMsg};