X-Git-Url: http://git.bitcoin.ninja/index.cgi?a=blobdiff_plain;f=lightning%2Fsrc%2Fln%2Fwire.rs;h=88e2ad7c1daee03ef245c795f0119eb229a10520;hb=b7d0357a8ad42415eb38e83aa4595b51e86d1a98;hp=1a01e33826dbb9790086afb1063219ea2f42c98c;hpb=4e9a358baad21496734334e723db5a6645e6a205;p=rust-lightning diff --git a/lightning/src/ln/wire.rs b/lightning/src/ln/wire.rs index 1a01e338..88e2ad7c 100644 --- a/lightning/src/ln/wire.rs +++ b/lightning/src/ln/wire.rs @@ -96,9 +96,59 @@ pub(crate) enum Message where T: core::fmt::Debug + Type + TestEq { Custom(T), } -impl Message where T: core::fmt::Debug + Type + TestEq { +impl Writeable for Message where T: core::fmt::Debug + Type + TestEq { + fn write(&self, writer: &mut W) -> Result<(), io::Error> { + match self { + &Message::Init(ref msg) => msg.write(writer), + &Message::Error(ref msg) => msg.write(writer), + &Message::Warning(ref msg) => msg.write(writer), + &Message::Ping(ref msg) => msg.write(writer), + &Message::Pong(ref msg) => msg.write(writer), + &Message::OpenChannel(ref msg) => msg.write(writer), + &Message::OpenChannelV2(ref msg) => msg.write(writer), + &Message::AcceptChannel(ref msg) => msg.write(writer), + &Message::AcceptChannelV2(ref msg) => msg.write(writer), + &Message::FundingCreated(ref msg) => msg.write(writer), + &Message::FundingSigned(ref msg) => msg.write(writer), + &Message::TxAddInput(ref msg) => msg.write(writer), + &Message::TxAddOutput(ref msg) => msg.write(writer), + &Message::TxRemoveInput(ref msg) => msg.write(writer), + &Message::TxRemoveOutput(ref msg) => msg.write(writer), + &Message::TxComplete(ref msg) => msg.write(writer), + &Message::TxSignatures(ref msg) => msg.write(writer), + &Message::TxInitRbf(ref msg) => msg.write(writer), + &Message::TxAckRbf(ref msg) => msg.write(writer), + &Message::TxAbort(ref msg) => msg.write(writer), + &Message::ChannelReady(ref msg) => msg.write(writer), + &Message::Shutdown(ref msg) => msg.write(writer), + &Message::ClosingSigned(ref msg) => msg.write(writer), + &Message::OnionMessage(ref msg) => msg.write(writer), + &Message::UpdateAddHTLC(ref msg) => msg.write(writer), + &Message::UpdateFulfillHTLC(ref msg) => msg.write(writer), + &Message::UpdateFailHTLC(ref msg) => msg.write(writer), + &Message::UpdateFailMalformedHTLC(ref msg) => msg.write(writer), + &Message::CommitmentSigned(ref msg) => msg.write(writer), + &Message::RevokeAndACK(ref msg) => msg.write(writer), + &Message::UpdateFee(ref msg) => msg.write(writer), + &Message::ChannelReestablish(ref msg) => msg.write(writer), + &Message::AnnouncementSignatures(ref msg) => msg.write(writer), + &Message::ChannelAnnouncement(ref msg) => msg.write(writer), + &Message::NodeAnnouncement(ref msg) => msg.write(writer), + &Message::ChannelUpdate(ref msg) => msg.write(writer), + &Message::QueryShortChannelIds(ref msg) => msg.write(writer), + &Message::ReplyShortChannelIdsEnd(ref msg) => msg.write(writer), + &Message::QueryChannelRange(ref msg) => msg.write(writer), + &Message::ReplyChannelRange(ref msg) => msg.write(writer), + &Message::GossipTimestampFilter(ref msg) => msg.write(writer), + &Message::Unknown(_) => { Ok(()) }, + &Message::Custom(ref msg) => msg.write(writer), + } + } +} + +impl Type for Message where T: core::fmt::Debug + Type + TestEq { /// Returns the type that was used to decode the message payload. - pub fn type_id(&self) -> u16 { + fn type_id(&self) -> u16 { match self { &Message::Init(ref msg) => msg.type_id(), &Message::Error(ref msg) => msg.type_id(), @@ -145,7 +195,9 @@ impl Message where T: core::fmt::Debug + Type + TestEq { &Message::Custom(ref msg) => msg.type_id(), } } +} +impl Message where T: core::fmt::Debug + Type + TestEq { /// Returns whether the message's type is even, indicating both endpoints must support it. pub fn is_even(&self) -> bool { (self.type_id() & 1) == 0