@@ -96,9 +96,59 @@ pub(crate) enum Message<T> where T: core::fmt::Debug + Type + TestEq {
9696 Custom ( T ) ,
9797}
9898
99- impl < T > Message < T > where T : core:: fmt:: Debug + Type + TestEq {
99+ impl < T > Writeable for Message < T > where T : core:: fmt:: Debug + Type + TestEq {
100+ fn write < W : Writer > ( & self , writer : & mut W ) -> Result < ( ) , io:: Error > {
101+ match self {
102+ & Message :: Init ( ref msg) => msg. write ( writer) ,
103+ & Message :: Error ( ref msg) => msg. write ( writer) ,
104+ & Message :: Warning ( ref msg) => msg. write ( writer) ,
105+ & Message :: Ping ( ref msg) => msg. write ( writer) ,
106+ & Message :: Pong ( ref msg) => msg. write ( writer) ,
107+ & Message :: OpenChannel ( ref msg) => msg. write ( writer) ,
108+ & Message :: OpenChannelV2 ( ref msg) => msg. write ( writer) ,
109+ & Message :: AcceptChannel ( ref msg) => msg. write ( writer) ,
110+ & Message :: AcceptChannelV2 ( ref msg) => msg. write ( writer) ,
111+ & Message :: FundingCreated ( ref msg) => msg. write ( writer) ,
112+ & Message :: FundingSigned ( ref msg) => msg. write ( writer) ,
113+ & Message :: TxAddInput ( ref msg) => msg. write ( writer) ,
114+ & Message :: TxAddOutput ( ref msg) => msg. write ( writer) ,
115+ & Message :: TxRemoveInput ( ref msg) => msg. write ( writer) ,
116+ & Message :: TxRemoveOutput ( ref msg) => msg. write ( writer) ,
117+ & Message :: TxComplete ( ref msg) => msg. write ( writer) ,
118+ & Message :: TxSignatures ( ref msg) => msg. write ( writer) ,
119+ & Message :: TxInitRbf ( ref msg) => msg. write ( writer) ,
120+ & Message :: TxAckRbf ( ref msg) => msg. write ( writer) ,
121+ & Message :: TxAbort ( ref msg) => msg. write ( writer) ,
122+ & Message :: ChannelReady ( ref msg) => msg. write ( writer) ,
123+ & Message :: Shutdown ( ref msg) => msg. write ( writer) ,
124+ & Message :: ClosingSigned ( ref msg) => msg. write ( writer) ,
125+ & Message :: OnionMessage ( ref msg) => msg. write ( writer) ,
126+ & Message :: UpdateAddHTLC ( ref msg) => msg. write ( writer) ,
127+ & Message :: UpdateFulfillHTLC ( ref msg) => msg. write ( writer) ,
128+ & Message :: UpdateFailHTLC ( ref msg) => msg. write ( writer) ,
129+ & Message :: UpdateFailMalformedHTLC ( ref msg) => msg. write ( writer) ,
130+ & Message :: CommitmentSigned ( ref msg) => msg. write ( writer) ,
131+ & Message :: RevokeAndACK ( ref msg) => msg. write ( writer) ,
132+ & Message :: UpdateFee ( ref msg) => msg. write ( writer) ,
133+ & Message :: ChannelReestablish ( ref msg) => msg. write ( writer) ,
134+ & Message :: AnnouncementSignatures ( ref msg) => msg. write ( writer) ,
135+ & Message :: ChannelAnnouncement ( ref msg) => msg. write ( writer) ,
136+ & Message :: NodeAnnouncement ( ref msg) => msg. write ( writer) ,
137+ & Message :: ChannelUpdate ( ref msg) => msg. write ( writer) ,
138+ & Message :: QueryShortChannelIds ( ref msg) => msg. write ( writer) ,
139+ & Message :: ReplyShortChannelIdsEnd ( ref msg) => msg. write ( writer) ,
140+ & Message :: QueryChannelRange ( ref msg) => msg. write ( writer) ,
141+ & Message :: ReplyChannelRange ( ref msg) => msg. write ( writer) ,
142+ & Message :: GossipTimestampFilter ( ref msg) => msg. write ( writer) ,
143+ & Message :: Unknown ( _) => { Ok ( ( ) ) } ,
144+ & Message :: Custom ( ref msg) => msg. write ( writer) ,
145+ }
146+ }
147+ }
148+
149+ impl < T > Type for Message < T > where T : core:: fmt:: Debug + Type + TestEq {
100150 /// Returns the type that was used to decode the message payload.
101- pub fn type_id ( & self ) -> u16 {
151+ fn type_id ( & self ) -> u16 {
102152 match self {
103153 & Message :: Init ( ref msg) => msg. type_id ( ) ,
104154 & Message :: Error ( ref msg) => msg. type_id ( ) ,
@@ -145,7 +195,9 @@ impl<T> Message<T> where T: core::fmt::Debug + Type + TestEq {
145195 & Message :: Custom ( ref msg) => msg. type_id ( ) ,
146196 }
147197 }
198+ }
148199
200+ impl < T > Message < T > where T : core:: fmt:: Debug + Type + TestEq {
149201 /// Returns whether the message's type is even, indicating both endpoints must support it.
150202 pub fn is_even ( & self ) -> bool {
151203 ( self . type_id ( ) & 1 ) == 0
0 commit comments