Skip to content

Commit

Permalink
Make the custom message traits cloneable as they're deep in nested st…
Browse files Browse the repository at this point in the history
…ructs
  • Loading branch information
TheBlueMatt committed Jan 23, 2024
1 parent 09673d5 commit 9b338cc
Show file tree
Hide file tree
Showing 4 changed files with 12 additions and 12 deletions.
14 changes: 7 additions & 7 deletions lightning/src/ln/wire.rs
Original file line number Diff line number Diff line change
Expand Up @@ -45,9 +45,9 @@ impl<T> TestEq for T {}
/// A Lightning message returned by [`read`] when decoding bytes received over the wire. Each
/// variant contains a message from [`msgs`] or otherwise the message type if unknown.
#[allow(missing_docs)]
#[derive(Debug)]
#[derive(Clone, Debug)]
#[cfg_attr(test, derive(PartialEq))]
pub(crate) enum Message<T> where T: core::fmt::Debug + Type + TestEq {
pub(crate) enum Message<T> where T: Clone + core::fmt::Debug + Type + TestEq {
Init(msgs::Init),
Error(msgs::ErrorMessage),
Warning(msgs::WarningMessage),
Expand Down Expand Up @@ -407,13 +407,13 @@ pub(crate) use self::encode::Encode;
/// Defines a type identifier for sending messages over the wire.
///
/// Messages implementing this trait specify a type and must be [`Writeable`].
pub trait Type: core::fmt::Debug + Writeable {
pub trait Type: core::fmt::Debug + Writeable + Clone {
/// Returns the type identifying the message payload.
fn type_id(&self) -> u16;
}

#[cfg(test)]
pub trait Type: core::fmt::Debug + Writeable + PartialEq {
pub trait Type: core::fmt::Debug + Writeable + Clone + PartialEq {
fn type_id(&self) -> u16;
}

Expand All @@ -423,12 +423,12 @@ impl Type for () {
}

#[cfg(test)]
impl<T: core::fmt::Debug + Writeable + PartialEq> Type for T where T: Encode {
impl<T: core::fmt::Debug + Writeable + Clone + PartialEq> Type for T where T: Encode {
fn type_id(&self) -> u16 { T::TYPE }
}

#[cfg(not(test))]
impl<T: core::fmt::Debug + Writeable> Type for T where T: Encode {
impl<T: core::fmt::Debug + Writeable + Clone> Type for T where T: Encode {
fn type_id(&self) -> u16 { T::TYPE }
}

Expand Down Expand Up @@ -775,7 +775,7 @@ mod tests {
}
}

#[derive(Eq, PartialEq, Debug)]
#[derive(Clone, Eq, PartialEq, Debug)]
struct TestCustomMessage {}

const CUSTOM_MESSAGE_TYPE : u16 = 9000;
Expand Down
2 changes: 1 addition & 1 deletion lightning/src/onion_message/functional_tests.rs
Original file line number Diff line number Diff line change
Expand Up @@ -427,7 +427,7 @@ fn reply_path() {
fn invalid_custom_message_type() {
let nodes = create_nodes(2);

#[derive(Debug)]
#[derive(Debug, Clone)]
struct InvalidCustomMessage{}
impl OnionMessageContents for InvalidCustomMessage {
fn tlv_type(&self) -> u64 {
Expand Down
4 changes: 2 additions & 2 deletions lightning/src/onion_message/messenger.rs
Original file line number Diff line number Diff line change
Expand Up @@ -121,8 +121,8 @@ pub(super) const MAX_TIMER_TICKS: usize = 2;
/// &keys_manager, &keys_manager, logger, message_router, &offers_message_handler,
/// &custom_message_handler
/// );

/// # #[derive(Debug)]
///
/// # #[derive(Debug, Clone)]
/// # struct YourCustomMessage {}
/// impl Writeable for YourCustomMessage {
/// fn write<W: Writer>(&self, w: &mut W) -> Result<(), io::Error> {
Expand Down
4 changes: 2 additions & 2 deletions lightning/src/onion_message/packet.rs
Original file line number Diff line number Diff line change
Expand Up @@ -117,7 +117,7 @@ pub(super) enum Payload<T: OnionMessageContents> {
/// The contents of an [`OnionMessage`] as read from the wire.
///
/// [`OnionMessage`]: crate::ln::msgs::OnionMessage
#[derive(Debug)]
#[derive(Clone, Debug)]
pub enum ParsedOnionMessageContents<T: OnionMessageContents> {
/// A message related to BOLT 12 Offers.
Offers(OffersMessage),
Expand Down Expand Up @@ -147,7 +147,7 @@ impl<T: OnionMessageContents> Writeable for ParsedOnionMessageContents<T> {
}

/// The contents of an onion message.
pub trait OnionMessageContents: Writeable + core::fmt::Debug {
pub trait OnionMessageContents: Writeable + core::fmt::Debug + Clone {
/// Returns the TLV type identifying the message contents. MUST be >= 64.
fn tlv_type(&self) -> u64;
}
Expand Down

0 comments on commit 9b338cc

Please sign in to comment.