aboutsummaryrefslogtreecommitdiffstats
path: root/src/transport/wire.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/transport/wire.rs')
-rw-r--r--src/transport/wire.rs13
1 files changed, 11 insertions, 2 deletions
diff --git a/src/transport/wire.rs b/src/transport/wire.rs
index 88b2916..7ff7835 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 = 41;
+pub(crate) const VERSION: u8 = 42;
/// What the second byte of a payload says.
fn tag(kind: MessageKind) -> u8 {
@@ -37,6 +37,7 @@ fn tag(kind: MessageKind) -> u8 {
MessageKind::NeighbourReply => 17,
MessageKind::Disconnect => 18,
MessageKind::Signatures => 19,
+ MessageKind::Refusals => 20,
}
}
@@ -99,6 +100,7 @@ pub(crate) fn encode(message: &ParsedMessage) -> Result<Vec<u8>, WireError> {
rmp_serde::encode::write(&mut payload, answer)?
}
ParsedMessage::Signatures(message) => rmp_serde::encode::write(&mut payload, message)?,
+ ParsedMessage::Refusals(message) => rmp_serde::encode::write(&mut payload, message)?,
}
Ok(payload)
}
@@ -180,6 +182,8 @@ pub(crate) fn decode(payload: &[u8]) -> Result<ParsedMessage, WireError> {
ParsedMessage::Disconnect(rmp_serde::from_slice(body)?)
} else if is(MessageKind::Signatures) {
ParsedMessage::Signatures(rmp_serde::from_slice(body)?)
+ } else if is(MessageKind::Refusals) {
+ ParsedMessage::Refusals(rmp_serde::from_slice(body)?)
} else {
return Err(WireError::UnknownKind(kind));
})
@@ -544,6 +548,11 @@ pub(crate) fn samples() -> Vec<ParsedMessage> {
epoch_seq: 1,
signatures: serde_bytes::ByteBuf::from(vec![9; 96]),
}),
+ ParsedMessage::Refusals(crate::transport::RefusalsMessage {
+ epoch,
+ epoch_seq: 1,
+ changes: vec![crate::document::ChangeHash([7; 32])],
+ }),
]
}
@@ -575,7 +584,7 @@ mod tests {
#[test]
fn every_kind_round_trips() {
let samples = samples();
- assert_eq!(samples.len(), 18, "a kind is missing from `samples`");
+ assert_eq!(samples.len(), 19, "a kind is missing from `samples`");
for message in samples {
let bytes = encode(&message).unwrap();
let decoded = decode(&bytes).unwrap();