aboutsummaryrefslogtreecommitdiffstats
path: root/src/transport/wire.rs
diff options
context:
space:
mode:
authortv <tv@krebsco.de>2026-11-07 22:35:10 +0100
committertv <tv@krebsco.de>2026-11-07 22:35:10 +0100
commit0e03a77bcb1d39f1fbda23d8e704ac40302afb93 (patch)
tree79245416e9721cdccb1b6879b8f1cfc43629cc74 /src/transport/wire.rs
parentc016fc783ff29e9069a446e17876046df64760a8 (diff)
dashboard: without LINKS; LINKS removed
The dashboard reads every member's links from the members themselves; LINKS and LINKS_REPLY, swarm::links and their wire tags go (wire version bumped). Nodes the browser can't reach are drawn from what the reachable ones measure. Auth plan M3.
Diffstat (limited to 'src/transport/wire.rs')
-rw-r--r--src/transport/wire.rs49
1 files changed, 2 insertions, 47 deletions
diff --git a/src/transport/wire.rs b/src/transport/wire.rs
index 0733d9c..8ead9b0 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 = 38;
+pub(crate) const VERSION: u8 = 39;
/// What the second byte of a payload says.
fn tag(kind: MessageKind) -> u8 {
@@ -29,8 +29,6 @@ fn tag(kind: MessageKind) -> u8 {
MessageKind::Me => 7,
MessageKind::Ping => 8,
MessageKind::Pong => 9,
- MessageKind::Links => 10,
- MessageKind::LinksReply => 11,
MessageKind::Probe => 12,
MessageKind::ProbeReply => 13,
MessageKind::Prune => 14,
@@ -90,8 +88,6 @@ pub(crate) fn encode(message: &ParsedMessage) -> Result<Vec<u8>, WireError> {
}
ParsedMessage::Ping(nonce) => rmp_serde::encode::write(&mut payload, nonce)?,
ParsedMessage::Pong { nonce, at } => rmp_serde::encode::write(&mut payload, &(nonce, at))?,
- ParsedMessage::Links(request) => rmp_serde::encode::write(&mut payload, request)?,
- ParsedMessage::LinksReply(reply) => rmp_serde::encode::write(&mut payload, reply)?,
ParsedMessage::Probe(request) => rmp_serde::encode::write(&mut payload, request)?,
ParsedMessage::ProbeReply(reply) => rmp_serde::encode::write(&mut payload, reply)?,
ParsedMessage::Prune(link) | ParsedMessage::Graft(link) => {
@@ -166,10 +162,6 @@ pub(crate) fn decode(payload: &[u8]) -> Result<ParsedMessage, WireError> {
} else if is(MessageKind::Pong) {
let (nonce, at) = rmp_serde::from_slice(body)?;
ParsedMessage::Pong { nonce, at }
- } else if is(MessageKind::Links) {
- ParsedMessage::Links(rmp_serde::from_slice(body)?)
- } else if is(MessageKind::LinksReply) {
- ParsedMessage::LinksReply(rmp_serde::from_slice(body)?)
} else if is(MessageKind::Probe) {
ParsedMessage::Probe(rmp_serde::from_slice(body)?)
} else if is(MessageKind::ProbeReply) {
@@ -504,43 +496,6 @@ pub(crate) fn samples() -> Vec<ParsedMessage> {
nonce: u64::MAX,
at: crate::clock::UnixMillis(5),
},
- ParsedMessage::Links(crate::transport::LinksRequest {
- epoch,
- epoch_seq: 1,
- nonce: 3,
- subscribe_secs: 60,
- of: vec!["q".into()],
- batch_ms: 250,
- hops: 2,
- }),
- ParsedMessage::LinksReply(crate::transport::LinksReply {
- epoch,
- epoch_seq: 1,
- nonce: 3,
- links: vec![crate::transport::Link {
- peer: "p".into(),
- transport: Some("libp2p".into()),
- relayed: true,
- down: false,
- rtt_us: Some(1500),
- dormant: false,
- others: vec![crate::transport::OtherPath {
- transport: "mycelium".into(),
- rtt_us: None,
- relayed: false,
- }],
- clock: Some(crate::transport::paths::ClockOffset {
- offset_ms: -2_500,
- within_ms: 40,
- }),
- }],
- relayed: vec![crate::transport::RelayedLinks {
- member: "q".into(),
- age_ms: 1200,
- epoch,
- links: Vec::new(),
- }],
- }),
ParsedMessage::Probe(crate::transport::ProbeRequest {
epoch,
epoch_seq: 1,
@@ -610,7 +565,7 @@ mod tests {
#[test]
fn every_kind_round_trips() {
let samples = samples();
- assert_eq!(samples.len(), 19, "a kind is missing from `samples`");
+ assert_eq!(samples.len(), 17, "a kind is missing from `samples`");
for message in samples {
let bytes = encode(&message).unwrap();
let decoded = decode(&bytes).unwrap();