@@ -96,9 +96,59 @@ pub(crate) enum Message<T> where T: core::fmt::Debug + Type + TestEq {
96
96
Custom ( T ) ,
97
97
}
98
98
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 {
100
150
/// Returns the type that was used to decode the message payload.
101
- pub fn type_id ( & self ) -> u16 {
151
+ fn type_id ( & self ) -> u16 {
102
152
match self {
103
153
& Message :: Init ( ref msg) => msg. type_id ( ) ,
104
154
& Message :: Error ( ref msg) => msg. type_id ( ) ,
@@ -145,7 +195,9 @@ impl<T> Message<T> where T: core::fmt::Debug + Type + TestEq {
145
195
& Message :: Custom ( ref msg) => msg. type_id ( ) ,
146
196
}
147
197
}
198
+ }
148
199
200
+ impl < T > Message < T > where T : core:: fmt:: Debug + Type + TestEq {
149
201
/// Returns whether the message's type is even, indicating both endpoints must support it.
150
202
pub fn is_even ( & self ) -> bool {
151
203
( self . type_id ( ) & 1 ) == 0
0 commit comments