aboutsummaryrefslogtreecommitdiffstats
path: root/src/transport
diff options
context:
space:
mode:
Diffstat (limited to 'src/transport')
-rw-r--r--src/transport/libp2p/tests.rs1
-rw-r--r--src/transport/mod.rs4
-rw-r--r--src/transport/mycelium/mod.rs1
-rw-r--r--src/transport/paths.rs1
-rw-r--r--src/transport/sim.rs1
-rw-r--r--src/transport/wire.rs8
6 files changed, 14 insertions, 2 deletions
diff --git a/src/transport/libp2p/tests.rs b/src/transport/libp2p/tests.rs
index 1d7c6ac..8f77bf7 100644
--- a/src/transport/libp2p/tests.rs
+++ b/src/transport/libp2p/tests.rs
@@ -60,6 +60,7 @@ fn status() -> ParsedMessage {
syncs_with_you: false,
leaving: false,
announcing: false,
+ eager: false,
})
}
diff --git a/src/transport/mod.rs b/src/transport/mod.rs
index 25f9b7c..7f1aa98 100644
--- a/src/transport/mod.rs
+++ b/src/transport/mod.rs
@@ -206,6 +206,10 @@ pub(crate) struct Status {
/// STATUS answered only if the recipient's heads differ. Most announcements reach a
/// neighbour that has the changes already, which has nothing to tell.
pub(crate) announcing: bool,
+ /// The sender wants the recipient's changes as soon as the recipient applies them,
+ /// sent as sync messages (an eager link, `swarm::relay`), not only announced. Every
+ /// STATUS says so, or not, again: one lost changes nothing for long.
+ pub(crate) eager: bool,
}
/// Cheap to clone: large parts are shared (`bytes::Bytes`).
diff --git a/src/transport/mycelium/mod.rs b/src/transport/mycelium/mod.rs
index 9850ef0..0562e72 100644
--- a/src/transport/mycelium/mod.rs
+++ b/src/transport/mycelium/mod.rs
@@ -718,6 +718,7 @@ mod tests {
syncs_with_you: true,
leaving: false,
announcing: false,
+ eager: false,
};
let payload = wire::encode(&ParsedMessage::StatusReply(status.clone())).unwrap();
// Mycelium's message data: a length byte, the topic, then our payload.
diff --git a/src/transport/paths.rs b/src/transport/paths.rs
index 29b3c23..1cd21e8 100644
--- a/src/transport/paths.rs
+++ b/src/transport/paths.rs
@@ -1514,6 +1514,7 @@ mod tests {
syncs_with_you: false,
leaving: false,
announcing: false,
+ eager: false,
})
}
diff --git a/src/transport/sim.rs b/src/transport/sim.rs
index 7a679fc..af262aa 100644
--- a/src/transport/sim.rs
+++ b/src/transport/sim.rs
@@ -388,6 +388,7 @@ mod tests {
syncs_with_you: false,
leaving: false,
announcing: false,
+ eager: false,
})
}
diff --git a/src/transport/wire.rs b/src/transport/wire.rs
index d3bf39d..40976ee 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 = 16;
+pub(crate) const VERSION: u8 = 17;
/// What the second byte of a payload says.
fn tag(kind: MessageKind) -> u8 {
@@ -370,6 +370,7 @@ pub(crate) fn samples() -> Vec<ParsedMessage> {
syncs_with_you: true,
leaving: false,
announcing: false,
+ eager: false,
};
let proof = IdentityProof {
key: [8; 32],
@@ -551,6 +552,7 @@ mod tests {
syncs_with_you: false,
leaving: false,
announcing: false,
+ eager: false,
};
let decoded =
decode(&encode(&ParsedMessage::StatusReply(status.clone())).unwrap()).unwrap();
@@ -575,6 +577,7 @@ mod tests {
syncs_with_you: true,
leaving: false,
announcing: false,
+ eager: false,
};
assert!(decode(&encode(&ParsedMessage::Status(status)).unwrap()).is_err());
}
@@ -673,10 +676,11 @@ mod tests {
syncs_with_you: false,
leaving: false,
announcing: true,
+ eager: false,
});
assert_eq!(
hex(&encode(&status).unwrap()),
- format!("{v}03979290c400{epoch_hex}01c3c2c2c3")
+ format!("{v}03989290c400{epoch_hex}01c3c2c2c3c2")
);
let who = ParsedMessage::Who(IdentityProof {