From c13b6d814bfb5dd95f9e40f8ff07dd45c47a387e Mon Sep 17 00:00:00 2001 From: Elias Rohrer Date: Mon, 25 Mar 2024 14:04:57 +0100 Subject: [PATCH 1/2] Implement `Readable` for `Offer` When storing `Offer`s, it's useful for them to implement LDK's deserialization trait. --- lightning/src/offers/offer.rs | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/lightning/src/offers/offer.rs b/lightning/src/offers/offer.rs index 762bc1f3306..db910b5e1bb 100644 --- a/lightning/src/offers/offer.rs +++ b/lightning/src/offers/offer.rs @@ -966,6 +966,13 @@ impl OfferContents { } } +impl Readable for Offer { + fn read(reader: &mut R) -> Result { + let bytes: WithoutLength> = Readable::read(reader)?; + Self::try_from(bytes.0).map_err(|_| DecodeError::InvalidValue) + } +} + impl Writeable for Offer { fn write(&self, writer: &mut W) -> Result<(), io::Error> { WithoutLength(&self.bytes).write(writer) From fc14495ac6a9dbe7dc9a6bd43c4395b599592db1 Mon Sep 17 00:00:00 2001 From: Elias Rohrer Date: Mon, 25 Mar 2024 14:07:21 +0100 Subject: [PATCH 2/2] Implement `Readable` for `Refund` When storing `Refund`s, it's useful for them to implement LDK's deserialization trait. --- lightning/src/offers/refund.rs | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/lightning/src/offers/refund.rs b/lightning/src/offers/refund.rs index d796971f8b3..624036d1957 100644 --- a/lightning/src/offers/refund.rs +++ b/lightning/src/offers/refund.rs @@ -103,7 +103,7 @@ use crate::offers::offer::{OfferTlvStream, OfferTlvStreamRef}; use crate::offers::parse::{Bech32Encode, Bolt12ParseError, Bolt12SemanticError, ParsedMessage}; use crate::offers::payer::{PayerContents, PayerTlvStream, PayerTlvStreamRef}; use crate::offers::signer::{Metadata, MetadataMaterial, self}; -use crate::util::ser::{SeekReadable, WithoutLength, Writeable, Writer}; +use crate::util::ser::{SeekReadable, Readable, WithoutLength, Writeable, Writer}; use crate::util::string::PrintableString; #[cfg(not(c_bindings))] @@ -769,6 +769,13 @@ impl RefundContents { } } +impl Readable for Refund { + fn read(reader: &mut R) -> Result { + let bytes: WithoutLength> = Readable::read(reader)?; + Self::try_from(bytes.0).map_err(|_| DecodeError::InvalidValue) + } +} + impl Writeable for Refund { fn write(&self, writer: &mut W) -> Result<(), io::Error> { WithoutLength(&self.bytes).write(writer)