diff options
| author | tv <tv@krebsco.de> | 2026-10-31 04:50:14 +0100 |
|---|---|---|
| committer | tv <tv@krebsco.de> | 2026-10-31 04:50:14 +0100 |
| commit | a8d6adcea38051e1edba4387ac4db9a48285db0f (patch) | |
| tree | ffa4dd7fece708b95d387d91884739d20eab1d85 /src | |
| parent | 6e0a3fc86fcd3df3d0b26469f132602c7dce9c24 (diff) | |
unify wire encoder
Diffstat (limited to 'src')
| -rw-r--r-- | src/transport/libp2p/mod.rs | 10 | ||||
| -rw-r--r-- | src/transport/sim.rs | 10 | ||||
| -rw-r--r-- | src/transport/tor.rs | 10 | ||||
| -rw-r--r-- | src/transport/wire.rs | 17 |
4 files changed, 19 insertions, 28 deletions
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<EncodedMessage> { - 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<EncodedMessage> { - 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<ParsedMessage> { 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<EncodedMessage> { - 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<EncodedMessage> { + 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<Vec<u8>, WireError> { let mut payload = vec![VERSION, tag(message.kind())]; |
