From 61565957ad094d1599355d12c6d1ce61d5978b2c Mon Sep 17 00:00:00 2001 From: Liu-Cheng Xu Date: Thu, 6 Jun 2024 11:19:42 +0800 Subject: [PATCH 1/2] Add API for extracting the inner payload of RawNetworkMessage I'd like to take out the `payload` of RawNetworkMessage and then send it to the actual network message processor, but finds there is no way to do it. This commit adds such an API to expose the owned value of inner `payload`. --- bitcoin/src/p2p/message.rs | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/bitcoin/src/p2p/message.rs b/bitcoin/src/p2p/message.rs index 0b2cf3cdc..239ba91c8 100644 --- a/bitcoin/src/p2p/message.rs +++ b/bitcoin/src/p2p/message.rs @@ -310,6 +310,11 @@ impl RawNetworkMessage { Self { magic, payload, payload_len, checksum } } + /// Consumes the [RawNetworkMessage] instance and returns the inner payload. + pub fn into_payload(self) -> NetworkMessage { + self.payload + } + /// The actual message data pub fn payload(&self) -> &NetworkMessage { &self.payload } From ce585dc529cec7f92974d94a3a9b18bfee8d60f8 Mon Sep 17 00:00:00 2001 From: Liu-Cheng Xu Date: Fri, 7 Jun 2024 00:59:33 +0800 Subject: [PATCH 2/2] api: Run just check-api --- api/bitcoin/all-features.txt | 1 + api/bitcoin/default-features.txt | 1 + 2 files changed, 2 insertions(+) diff --git a/api/bitcoin/all-features.txt b/api/bitcoin/all-features.txt index a042630a4..d9ad3d9b6 100644 --- a/api/bitcoin/all-features.txt +++ b/api/bitcoin/all-features.txt @@ -8931,6 +8931,7 @@ pub fn bitcoin::p2p::message::RawNetworkMessage::consensus_decode_from_finite_re pub fn bitcoin::p2p::message::RawNetworkMessage::consensus_encode(&self, w: &mut W) -> core::result::Result pub fn bitcoin::p2p::message::RawNetworkMessage::eq(&self, other: &bitcoin::p2p::message::RawNetworkMessage) -> bool pub fn bitcoin::p2p::message::RawNetworkMessage::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn bitcoin::p2p::message::RawNetworkMessage::into_payload(self) -> bitcoin::p2p::message::NetworkMessage pub fn bitcoin::p2p::message::RawNetworkMessage::magic(&self) -> &bitcoin::p2p::Magic pub fn bitcoin::p2p::message::RawNetworkMessage::new(magic: bitcoin::p2p::Magic, payload: bitcoin::p2p::message::NetworkMessage) -> Self pub fn bitcoin::p2p::message::RawNetworkMessage::payload(&self) -> &bitcoin::p2p::message::NetworkMessage diff --git a/api/bitcoin/default-features.txt b/api/bitcoin/default-features.txt index b1299b1af..b56d80bba 100644 --- a/api/bitcoin/default-features.txt +++ b/api/bitcoin/default-features.txt @@ -8465,6 +8465,7 @@ pub fn bitcoin::p2p::message::RawNetworkMessage::consensus_decode_from_finite_re pub fn bitcoin::p2p::message::RawNetworkMessage::consensus_encode(&self, w: &mut W) -> core::result::Result pub fn bitcoin::p2p::message::RawNetworkMessage::eq(&self, other: &bitcoin::p2p::message::RawNetworkMessage) -> bool pub fn bitcoin::p2p::message::RawNetworkMessage::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn bitcoin::p2p::message::RawNetworkMessage::into_payload(self) -> bitcoin::p2p::message::NetworkMessage pub fn bitcoin::p2p::message::RawNetworkMessage::magic(&self) -> &bitcoin::p2p::Magic pub fn bitcoin::p2p::message::RawNetworkMessage::new(magic: bitcoin::p2p::Magic, payload: bitcoin::p2p::message::NetworkMessage) -> Self pub fn bitcoin::p2p::message::RawNetworkMessage::payload(&self) -> &bitcoin::p2p::message::NetworkMessage