From a8d6adcea38051e1edba4387ac4db9a48285db0f Mon Sep 17 00:00:00 2001 From: tv Date: Sat, 31 Oct 2026 04:50:14 +0100 Subject: unify wire encoder --- src/transport/libp2p/mod.rs | 10 +--------- src/transport/sim.rs | 10 +--------- src/transport/tor.rs | 10 +--------- src/transport/wire.rs | 17 ++++++++++++++++- 4 files changed, 19 insertions(+), 28 deletions(-) (limited to 'src/transport') diff --git a/src/transport/libp2p/mod.rs b/src/transport/libp2p/mod.rs index 86e7734..06e9e15 100644 --- a/src/transport/libp2p/mod.rs +++ b/src/transport/libp2p/mod.rs @@ -517,15 +517,7 @@ impl Transport for Libp2pTransport { } fn encode(&self, peer: &str, message: &ParsedMessage) -> Result { - let body = wire::encode(message)?; - Ok(EncodedMessage { - peer: peer.to_owned(), - address: peer.to_owned(), - payload_len: body.len(), - body: body.into(), - kind: message.kind(), - message: None, - }) + wire::encoded(peer, message) } async fn send_encoded(&self, message: &EncodedMessage) -> Result<()> { diff --git a/src/transport/sim.rs b/src/transport/sim.rs index 9267232..f4a48aa 100644 --- a/src/transport/sim.rs +++ b/src/transport/sim.rs @@ -273,15 +273,7 @@ pub(crate) const WIRE: Codec = Codec { }; fn wire_encode(peer: &str, message: &ParsedMessage) -> Result { - let body = super::wire::encode(message)?; - Ok(EncodedMessage { - peer: peer.to_owned(), - address: peer.to_owned(), - payload_len: body.len(), - body: body.into(), - kind: message.kind(), - message: None, - }) + super::wire::encoded(peer, message) } fn wire_decode(body: &[u8]) -> Result { diff --git a/src/transport/tor.rs b/src/transport/tor.rs index f2e0199..e077e7b 100644 --- a/src/transport/tor.rs +++ b/src/transport/tor.rs @@ -597,15 +597,7 @@ impl Transport for TorTransport { } fn encode(&self, peer: &str, message: &ParsedMessage) -> Result { - let body = wire::encode(message)?; - Ok(EncodedMessage { - peer: peer.to_owned(), - address: peer.to_owned(), - payload_len: body.len(), - body: body.into(), - kind: message.kind(), - message: None, - }) + wire::encoded(peer, message) } async fn send_encoded(&self, message: &EncodedMessage) -> Result<()> { diff --git a/src/transport/wire.rs b/src/transport/wire.rs index 40e32a2..28bd431 100644 --- a/src/transport/wire.rs +++ b/src/transport/wire.rs @@ -10,7 +10,7 @@ use thiserror::Error; -use super::{MessageKind, ParsedMessage}; +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). @@ -52,6 +52,21 @@ pub(crate) enum WireError { Decode(#[from] rmp_serde::decode::Error), } +/// `message` to `peer`, encoded as it goes on the wire alone (no envelope: libp2p, +/// Tor, the simulator); `peer` is its address too. +#[cfg_attr(not(any(feature = "libp2p", feature = "tor", test)), allow(dead_code))] +pub(crate) fn encoded(peer: &str, message: &ParsedMessage) -> anyhow::Result { + let body = encode(message)?; + Ok(EncodedMessage { + peer: peer.to_owned(), + address: peer.to_owned(), + payload_len: body.len(), + body: body.into(), + kind: message.kind(), + message: None, + }) +} + /// The payload of `message`. pub(crate) fn encode(message: &ParsedMessage) -> Result, WireError> { let mut payload = vec![VERSION, tag(message.kind())]; -- cgit v1.3.1