diff options
| author | tv <tv@krebsco.de> | 2026-11-05 03:50:38 +0100 |
|---|---|---|
| committer | tv <tv@krebsco.de> | 2026-11-05 03:50:38 +0100 |
| commit | a02ed87abf6a0dc9d3f36bafcf333272586093aa (patch) | |
| tree | e22e2f58703d3eac74df8e0eccc51c47b2f45133 /src/transport/wire.rs | |
| parent | a9fb4e6890bfaef1e25cdceb4eea9c997e3c7cdf (diff) | |
epoch tag in sync
Diffstat (limited to 'src/transport/wire.rs')
| -rw-r--r-- | src/transport/wire.rs | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/src/transport/wire.rs b/src/transport/wire.rs index 3f7736d..d1ac14d 100644 --- a/src/transport/wire.rs +++ b/src/transport/wire.rs @@ -14,7 +14,7 @@ use super::{EncodedMessage, MessageKind, ParsedMessage}; /// The wire format's version, the first byte of every payload. Bump it with every change /// to a message type or a codec (`golden_bytes` fails then). -pub(crate) const VERSION: u8 = 29; +pub(crate) const VERSION: u8 = 30; /// What the second byte of a payload says. fn tag(kind: MessageKind) -> u8 { @@ -166,6 +166,19 @@ pub(crate) mod codec { } } + /// 8 bytes (`EpochTag::prefix`). + pub(crate) mod bytes8 { + use super::*; + + pub(crate) fn serialize<S: Serializer>(value: &[u8; 8], s: S) -> Result<S::Ok, S::Error> { + Bytes::new(value).serialize(s) + } + + pub(crate) fn deserialize<'de, D: Deserializer<'de>>(d: D) -> Result<[u8; 8], D::Error> { + fixed(&ByteBuf::deserialize(d)?, "an epoch tag") + } + } + /// A 64-byte signature. pub(crate) mod bytes64 { use super::*; @@ -401,7 +414,7 @@ pub(crate) fn samples() -> Vec<ParsedMessage> { sender_run_id: [6; 16], }), ParsedMessage::Sync(SyncEnvelope { - epoch, + epoch: crate::transport::EpochTag::of(epoch), epoch_seq: 1, body: SyncBody::Delta(DeltaSpec { from: Vec::new(), |
