Skip to content

Commit 6fbbc74

Browse files
jkczyzTibo-lg
authored andcommitted
Remove wire::MessageType in favor of u16
With custom messages, wire::Type was introduced. wire::MessageType is a bit redundant, so use u16 instead and move is_even to wire::Message.
1 parent b6f743f commit 6fbbc74

File tree

2 files changed

+22
-36
lines changed

2 files changed

+22
-36
lines changed

lightning/src/ln/peer_handler.rs

+5-6
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@ use ln::channelmanager::{SimpleArcChannelManager, SimpleRefChannelManager};
2424
use util::ser::{VecWriter, Writeable, Writer};
2525
use ln::peer_channel_encryptor::{PeerChannelEncryptor,NextNoiseStep};
2626
use ln::wire;
27-
use ln::wire::MessageType;
2827
use util::byte_utils;
2928
use util::events::{MessageSendEvent, MessageSendEventsProvider};
3029
use util::logger::Logger;
@@ -86,7 +85,7 @@ pub struct IgnoringCustomMessageHandler{}
8685
type DummyCustomType = ();
8786

8887
impl wire::Type for DummyCustomType {
89-
fn type_id(&self) -> MessageType {
88+
fn type_id(&self) -> u16 {
9089
// We should never call this for `DummyCustomType`
9190
unreachable!();
9291
}
@@ -1086,13 +1085,13 @@ impl<Descriptor: SocketDescriptor, CM: Deref, RM: Deref, L: Deref, CMH: Deref> P
10861085
},
10871086

10881087
// Unknown messages:
1089-
wire::Message::Unknown(msg_type) if msg_type.is_even() => {
1090-
log_debug!(self.logger, "Received unknown even message of type {}, disconnecting peer!", msg_type);
1088+
wire::Message::Unknown(type_id) if message.is_even() => {
1089+
log_debug!(self.logger, "Received unknown even message of type {}, disconnecting peer!", type_id);
10911090
// Fail the channel if message is an even, unknown type as per BOLT #1.
10921091
return Err(PeerHandleError{ no_connection_possible: true }.into());
10931092
},
1094-
wire::Message::Unknown(msg_type) => {
1095-
log_trace!(self.logger, "Received unknown odd message of type {}, ignoring", msg_type);
1093+
wire::Message::Unknown(type_id) => {
1094+
log_trace!(self.logger, "Received unknown odd message of type {}, ignoring", type_id);
10961095
},
10971096
wire::Message::Custom(custom) => {
10981097
self.custom_message_handler.handle_custom_message(custom)?;

lightning/src/ln/wire.rs

+17-30
Original file line numberDiff line numberDiff line change
@@ -68,18 +68,13 @@ pub(crate) enum Message<T> where T: core::fmt::Debug + Type {
6868
ReplyChannelRange(msgs::ReplyChannelRange),
6969
GossipTimestampFilter(msgs::GossipTimestampFilter),
7070
/// A message that could not be decoded because its type is unknown.
71-
Unknown(MessageType),
71+
Unknown(u16),
7272
Custom(T),
7373
}
7474

75-
/// A number identifying a message to determine how it is encoded on the wire.
76-
#[derive(Clone, Copy, Debug)]
77-
pub struct MessageType(u16);
78-
7975
impl<T> Message<T> where T: core::fmt::Debug + Type {
80-
#[allow(dead_code)] // This method is only used in tests
8176
/// Returns the type that was used to decode the message payload.
82-
pub fn type_id(&self) -> MessageType {
77+
pub fn type_id(&self) -> u16 {
8378
match self {
8479
&Message::Init(ref msg) => msg.type_id(),
8580
&Message::Error(ref msg) => msg.type_id(),
@@ -113,18 +108,10 @@ impl<T> Message<T> where T: core::fmt::Debug + Type {
113108
&Message::Custom(ref msg) => msg.type_id(),
114109
}
115110
}
116-
}
117111

118-
impl MessageType {
119-
/// Returns whether the message type is even, indicating both endpoints must support it.
112+
/// Returns whether the message's type is even, indicating both endpoints must support it.
120113
pub fn is_even(&self) -> bool {
121-
(self.0 & 1) == 0
122-
}
123-
}
124-
125-
impl ::core::fmt::Display for MessageType {
126-
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
127-
write!(f, "{}", self.0)
114+
(self.type_id() & 1) == 0
128115
}
129116
}
130117

@@ -232,7 +219,7 @@ where
232219
if let Some(custom) = custom_reader.read(message_type, buffer)? {
233220
Ok(Message::Custom(custom))
234221
} else {
235-
Ok(Message::Unknown(MessageType(message_type)))
222+
Ok(Message::Unknown(message_type))
236223
}
237224
},
238225
}
@@ -245,7 +232,7 @@ where
245232
///
246233
/// Returns an I/O error if the write could not be completed.
247234
pub fn write<M: Type + Writeable, W: Writer>(message: &M, buffer: &mut W) -> Result<(), io::Error> {
248-
message.type_id().0.write(buffer)?;
235+
message.type_id().write(buffer)?;
249236
message.write(buffer)
250237
}
251238

@@ -264,12 +251,12 @@ pub(crate) use self::encode::Encode;
264251
/// Messages implementing this trait specify a type and must be [`Writeable`] to use with [`write()`].
265252
pub trait Type {
266253
/// Returns the type identifying the message payload.
267-
fn type_id(&self) -> MessageType;
254+
fn type_id(&self) -> u16;
268255
}
269256

270257
impl<T> Type for T where T: Encode {
271-
fn type_id(&self) -> MessageType {
272-
MessageType(T::TYPE)
258+
fn type_id(&self) -> u16 {
259+
T::TYPE
273260
}
274261
}
275262

@@ -440,7 +427,7 @@ mod tests {
440427
let mut reader = io::Cursor::new(buffer);
441428
let message = read(&mut reader, &IgnoringCustomMessageHandler{}).unwrap();
442429
match message {
443-
Message::Unknown(MessageType(::core::u16::MAX)) => (),
430+
Message::Unknown(::core::u16::MAX) => (),
444431
_ => panic!("Expected message type {}; found: {}", ::core::u16::MAX, message.type_id()),
445432
}
446433
}
@@ -476,14 +463,14 @@ mod tests {
476463

477464
#[test]
478465
fn is_even_message_type() {
479-
let message = Message::<()>::Unknown(MessageType(42));
480-
assert!(message.type_id().is_even());
466+
let message = Message::<()>::Unknown(42);
467+
assert!(message.is_even());
481468
}
482469

483470
#[test]
484471
fn is_odd_message_type() {
485-
let message = Message::<()>::Unknown(MessageType(43));
486-
assert!(!message.type_id().is_even());
472+
let message = Message::<()>::Unknown(43);
473+
assert!(!message.is_even());
487474
}
488475

489476
#[test]
@@ -553,8 +540,8 @@ mod tests {
553540
const CUSTOM_MESSAGE_TYPE : u16 = 9000;
554541

555542
impl Type for TestCustomMessage {
556-
fn type_id(&self) -> MessageType {
557-
MessageType(CUSTOM_MESSAGE_TYPE)
543+
fn type_id(&self) -> u16 {
544+
CUSTOM_MESSAGE_TYPE
558545
}
559546
}
560547

@@ -591,7 +578,7 @@ mod tests {
591578
let decoded_msg = read(&mut reader, &TestCustomMessageReader{}).unwrap();
592579
match decoded_msg {
593580
Message::Custom(custom) => {
594-
assert_eq!(custom.type_id().0, CUSTOM_MESSAGE_TYPE);
581+
assert_eq!(custom.type_id(), CUSTOM_MESSAGE_TYPE);
595582
assert_eq!(custom, TestCustomMessage {});
596583
},
597584
_ => panic!("Expected custom message, found message type: {}", decoded_msg.type_id()),

0 commit comments

Comments
 (0)