aboutsummaryrefslogtreecommitdiffstats
path: root/src/transport
diff options
context:
space:
mode:
Diffstat (limited to 'src/transport')
-rw-r--r--src/transport/libp2p/mod.rs10
-rw-r--r--src/transport/sim.rs10
-rw-r--r--src/transport/tor.rs10
-rw-r--r--src/transport/wire.rs17
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())];