X-Git-Url: http://git.bitcoin.ninja/index.cgi?a=blobdiff_plain;f=lightning%2Fsrc%2Fonion_message%2Foffers.rs;h=254db7b81bdf12d89c3a1b739e4da7e06faa5d18;hb=4443db67f9bced58882eaf99d68608ed5be6bba3;hp=f5945cd55054dc6c368a668fcf4aa777f15d6a21;hpb=840efd533468cf7cacd8b4bab27ce2db86b3eb93;p=rust-lightning diff --git a/lightning/src/onion_message/offers.rs b/lightning/src/onion_message/offers.rs index f5945cd5..254db7b8 100644 --- a/lightning/src/onion_message/offers.rs +++ b/lightning/src/onion_message/offers.rs @@ -17,6 +17,7 @@ use crate::offers::invoice_request::InvoiceRequest; use crate::offers::invoice::Bolt12Invoice; use crate::offers::parse::Bolt12ParseError; use crate::onion_message::OnionMessageContents; +use crate::onion_message::messenger::PendingOnionMessage; use crate::util::logger::Logger; use crate::util::ser::{Readable, ReadableArgs, Writeable, Writer}; @@ -33,7 +34,17 @@ const INVOICE_ERROR_TLV_TYPE: u64 = 68; pub trait OffersMessageHandler { /// Handles the given message by either responding with an [`Bolt12Invoice`], sending a payment, /// or replying with an error. + /// + /// The returned [`OffersMessage`], if any, is enqueued to be sent by [`OnionMessenger`]. + /// + /// [`OnionMessenger`]: crate::onion_message::OnionMessenger fn handle_message(&self, message: OffersMessage) -> Option; + + /// Releases any [`OffersMessage`]s that need to be sent. + /// + /// Typically, this is used for messages initiating a payment flow rather than in response to + /// another message. The latter should use the return value of [`Self::handle_message`]. + fn release_pending_messages(&self) -> Vec> { vec![] } } /// Possible BOLT 12 Offers messages sent and received via an [`OnionMessage`].