Skip to content

Commit 5da1d73

Browse files
committed
Move common message handler methods into a common trait
Instead of having each `*MessageHandler` implement the same `peer_connected`, `peer_disconnected`, `provided_init_features`, and `provided_node_features` methods, here we pull them all out into one common trait and make all the message handlers extend it. Since `get_and_clear_pending_msg_events` was also common we also move that into the same trait, dropping the `MessageSendEventsProvider` trait. Best reviewed with `--color-moved`
1 parent df68774 commit 5da1d73

35 files changed

+630
-648
lines changed

fuzz/src/chanmon_consistency.rs

+3-2
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,6 @@ use lightning::chain::{
4343
chainmonitor, channelmonitor, BestBlock, ChannelMonitorUpdateStatus, Confirm, Watch,
4444
};
4545
use lightning::events;
46-
use lightning::events::MessageSendEventsProvider;
4746
use lightning::ln::channel::FEE_SPIKE_BUFFER_FEE_INCREASE_MULTIPLE;
4847
use lightning::ln::channel_state::ChannelDetails;
4948
use lightning::ln::channelmanager::{
@@ -52,7 +51,9 @@ use lightning::ln::channelmanager::{
5251
};
5352
use lightning::ln::functional_test_utils::*;
5453
use lightning::ln::inbound_payment::ExpandedKey;
55-
use lightning::ln::msgs::{ChannelMessageHandler, CommitmentUpdate, Init, UpdateAddHTLC};
54+
use lightning::ln::msgs::{
55+
BaseMessageHandler, ChannelMessageHandler, CommitmentUpdate, Init, UpdateAddHTLC,
56+
};
5657
use lightning::ln::script::ShutdownScript;
5758
use lightning::ln::types::ChannelId;
5859
use lightning::offers::invoice::UnsignedBolt12Invoice;

fuzz/src/onion_message.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ use lightning::blinded_path::message::{
1010
};
1111
use lightning::blinded_path::EmptyNodeIdLookUp;
1212
use lightning::ln::inbound_payment::ExpandedKey;
13-
use lightning::ln::msgs::{self, OnionMessageHandler};
13+
use lightning::ln::msgs::{self, BaseMessageHandler, DecodeError, OnionMessageHandler};
1414
use lightning::ln::peer_handler::IgnoringMessageHandler;
1515
use lightning::ln::script::ShutdownScript;
1616
use lightning::offers::invoice::UnsignedBolt12Invoice;
@@ -170,7 +170,7 @@ impl CustomOnionMessageHandler for TestCustomMessageHandler {
170170
}
171171
fn read_custom_message<R: io::Read>(
172172
&self, _message_type: u64, buffer: &mut R,
173-
) -> Result<Option<Self::CustomMessage>, msgs::DecodeError> {
173+
) -> Result<Option<Self::CustomMessage>, DecodeError> {
174174
let mut buf = Vec::new();
175175
buffer.read_to_limit(&mut buf, u64::MAX)?;
176176
return Ok(Some(TestCustomMessage {}));

lightning-background-processor/src/lib.rs

+2-4
Original file line numberDiff line numberDiff line change
@@ -1070,15 +1070,13 @@ mod tests {
10701070
use lightning::chain::channelmonitor::ANTI_REORG_DELAY;
10711071
use lightning::chain::transaction::OutPoint;
10721072
use lightning::chain::{chainmonitor, BestBlock, Confirm, Filter};
1073-
use lightning::events::{
1074-
Event, MessageSendEvent, MessageSendEventsProvider, PathFailure, ReplayEvent,
1075-
};
1073+
use lightning::events::{Event, MessageSendEvent, PathFailure, ReplayEvent};
10761074
use lightning::ln::channelmanager;
10771075
use lightning::ln::channelmanager::{
10781076
ChainParameters, PaymentId, BREAKDOWN_TIMEOUT, MIN_CLTV_EXPIRY_DELTA,
10791077
};
10801078
use lightning::ln::functional_test_utils::*;
1081-
use lightning::ln::msgs::{ChannelMessageHandler, Init};
1079+
use lightning::ln::msgs::{BaseMessageHandler, ChannelMessageHandler, Init};
10821080
use lightning::ln::peer_handler::{
10831081
IgnoringMessageHandler, MessageHandler, PeerManager, SocketDescriptor,
10841082
};

lightning-dns-resolver/src/lib.rs

+3-1
Original file line numberDiff line numberDiff line change
@@ -164,7 +164,9 @@ mod test {
164164
use lightning::events::{Event, PaymentPurpose};
165165
use lightning::ln::channelmanager::{PaymentId, Retry};
166166
use lightning::ln::functional_test_utils::*;
167-
use lightning::ln::msgs::{ChannelMessageHandler, Init, OnionMessageHandler};
167+
use lightning::ln::msgs::{
168+
BaseMessageHandler, ChannelMessageHandler, Init, OnionMessageHandler,
169+
};
168170
use lightning::ln::peer_handler::IgnoringMessageHandler;
169171
use lightning::onion_message::dns_resolution::{HumanReadableName, OMNameResolver};
170172
use lightning::onion_message::messenger::{

lightning-liquidity/tests/common/mod.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ use lightning::chain::{chainmonitor, BestBlock, Confirm};
1515
use lightning::ln::channelmanager;
1616
use lightning::ln::channelmanager::ChainParameters;
1717
use lightning::ln::functional_test_utils::*;
18-
use lightning::ln::msgs::{ChannelMessageHandler, Init};
18+
use lightning::ln::msgs::{BaseMessageHandler, ChannelMessageHandler, Init};
1919
use lightning::ln::peer_handler::{
2020
IgnoringMessageHandler, MessageHandler, PeerManager, SocketDescriptor,
2121
};

lightning-net-tokio/src/lib.rs

+15-23
Original file line numberDiff line numberDiff line change
@@ -684,12 +684,6 @@ mod tests {
684684
) -> Option<NodeAnnouncement> {
685685
None
686686
}
687-
fn peer_connected(
688-
&self, _their_node_id: PublicKey, _init_msg: &Init, _inbound: bool,
689-
) -> Result<(), ()> {
690-
Ok(())
691-
}
692-
fn peer_disconnected(&self, _their_node_id: PublicKey) {}
693687
fn handle_reply_channel_range(
694688
&self, _their_node_id: PublicKey, _msg: ReplyChannelRange,
695689
) -> Result<(), LightningError> {
@@ -710,12 +704,6 @@ mod tests {
710704
) -> Result<(), LightningError> {
711705
Ok(())
712706
}
713-
fn provided_node_features(&self) -> NodeFeatures {
714-
NodeFeatures::empty()
715-
}
716-
fn provided_init_features(&self, _their_node_id: PublicKey) -> InitFeatures {
717-
InitFeatures::empty()
718-
}
719707
fn processing_queue_high(&self) -> bool {
720708
false
721709
}
@@ -766,35 +754,39 @@ mod tests {
766754
&self, _their_node_id: PublicKey, _msg: PeerStorageRetrieval,
767755
) {
768756
}
757+
fn handle_channel_reestablish(&self, _their_node_id: PublicKey, _msg: &ChannelReestablish) {
758+
}
759+
fn handle_error(&self, _their_node_id: PublicKey, _msg: &ErrorMessage) {}
760+
fn get_chain_hashes(&self) -> Option<Vec<ChainHash>> {
761+
Some(vec![ChainHash::using_genesis_block(Network::Testnet)])
762+
}
763+
fn message_received(&self) {}
764+
}
765+
impl BaseMessageHandler for MsgHandler {
769766
fn peer_disconnected(&self, their_node_id: PublicKey) {
770767
if their_node_id == self.expected_pubkey {
771768
self.disconnected_flag.store(true, Ordering::SeqCst);
772-
self.pubkey_disconnected.clone().try_send(()).unwrap();
769+
// This method is called twice as we're two message handlers. `try_send` will fail
770+
// the second time.
771+
let _ = self.pubkey_disconnected.clone().try_send(());
773772
}
774773
}
775774
fn peer_connected(
776775
&self, their_node_id: PublicKey, _init_msg: &Init, _inbound: bool,
777776
) -> Result<(), ()> {
778777
if their_node_id == self.expected_pubkey {
779-
self.pubkey_connected.clone().try_send(()).unwrap();
778+
// This method is called twice as we're two message handlers. `try_send` will fail
779+
// the second time.
780+
let _ = self.pubkey_connected.clone().try_send(());
780781
}
781782
Ok(())
782783
}
783-
fn handle_channel_reestablish(&self, _their_node_id: PublicKey, _msg: &ChannelReestablish) {
784-
}
785-
fn handle_error(&self, _their_node_id: PublicKey, _msg: &ErrorMessage) {}
786784
fn provided_node_features(&self) -> NodeFeatures {
787785
NodeFeatures::empty()
788786
}
789787
fn provided_init_features(&self, _their_node_id: PublicKey) -> InitFeatures {
790788
InitFeatures::empty()
791789
}
792-
fn get_chain_hashes(&self) -> Option<Vec<ChainHash>> {
793-
Some(vec![ChainHash::using_genesis_block(Network::Testnet)])
794-
}
795-
fn message_received(&self) {}
796-
}
797-
impl MessageSendEventsProvider for MsgHandler {
798790
fn get_and_clear_pending_msg_events(&self) -> Vec<MessageSendEvent> {
799791
let mut ret = Vec::new();
800792
mem::swap(&mut *self.msg_events.lock().unwrap(), &mut ret);

lightning-persister/src/fs_store.rs

+2-1
Original file line numberDiff line numberDiff line change
@@ -501,8 +501,9 @@ mod tests {
501501
use lightning::chain::chainmonitor::Persist;
502502
use lightning::chain::ChannelMonitorUpdateStatus;
503503
use lightning::check_closed_event;
504-
use lightning::events::{ClosureReason, MessageSendEventsProvider};
504+
use lightning::events::ClosureReason;
505505
use lightning::ln::functional_test_utils::*;
506+
use lightning::ln::msgs::BaseMessageHandler;
506507
use lightning::util::persist::read_channel_monitors;
507508
use lightning::util::test_utils;
508509

lightning/src/chain/chainmonitor.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -928,9 +928,9 @@ mod tests {
928928
use crate::{get_htlc_update_msgs, get_revoke_commit_msgs};
929929
use crate::chain::{ChannelMonitorUpdateStatus, Watch};
930930
use crate::chain::channelmonitor::ANTI_REORG_DELAY;
931-
use crate::events::{ClosureReason, Event, MessageSendEvent, MessageSendEventsProvider};
931+
use crate::events::{ClosureReason, Event, MessageSendEvent};
932932
use crate::ln::functional_test_utils::*;
933-
use crate::ln::msgs::ChannelMessageHandler;
933+
use crate::ln::msgs::{BaseMessageHandler, ChannelMessageHandler};
934934

935935
const CHAINSYNC_MONITOR_PARTITION_FACTOR: u32 = 5;
936936

lightning/src/events/mod.rs

-7
Original file line numberDiff line numberDiff line change
@@ -2655,13 +2655,6 @@ pub enum MessageSendEvent {
26552655
}
26562656
}
26572657

2658-
/// A trait indicating an object may generate message send events
2659-
pub trait MessageSendEventsProvider {
2660-
/// Gets the list of pending events which were generated by previous actions, clearing the list
2661-
/// in the process.
2662-
fn get_and_clear_pending_msg_events(&self) -> Vec<MessageSendEvent>;
2663-
}
2664-
26652658
/// A trait indicating an object may generate events.
26662659
///
26672660
/// Events are processed by passing an [`EventHandler`] to [`process_pending_events`].

lightning/src/ln/async_payments_tests.rs

+2-5
Original file line numberDiff line numberDiff line change
@@ -11,15 +11,12 @@ use crate::blinded_path::message::{MessageContext, OffersContext};
1111
use crate::blinded_path::payment::PaymentContext;
1212
use crate::blinded_path::payment::{AsyncBolt12OfferContext, BlindedPaymentTlvs};
1313
use crate::chain::channelmonitor::{HTLC_FAIL_BACK_BUFFER, LATENCY_GRACE_PERIOD_BLOCKS};
14-
use crate::events::{
15-
Event, HTLCDestination, MessageSendEvent, MessageSendEventsProvider, PaymentFailureReason,
16-
};
14+
use crate::events::{Event, HTLCDestination, MessageSendEvent, PaymentFailureReason};
1715
use crate::ln::blinded_payment_tests::{fail_blinded_htlc_backwards, get_blinded_route_parameters};
1816
use crate::ln::channelmanager::{PaymentId, RecipientOnionFields};
1917
use crate::ln::functional_test_utils::*;
2018
use crate::ln::msgs;
21-
use crate::ln::msgs::ChannelMessageHandler;
22-
use crate::ln::msgs::OnionMessageHandler;
19+
use crate::ln::msgs::{BaseMessageHandler, ChannelMessageHandler, OnionMessageHandler};
2320
use crate::ln::offers_tests;
2421
use crate::ln::onion_utils::INVALID_ONION_BLINDING;
2522
use crate::ln::outbound_payment::PendingOutboundPayment;

lightning/src/ln/async_signer_tests.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -20,11 +20,11 @@ use crate::chain::channelmonitor::LATENCY_GRACE_PERIOD_BLOCKS;
2020
use crate::chain::ChannelMonitorUpdateStatus;
2121
use crate::chain::transaction::OutPoint;
2222
use crate::events::bump_transaction::WalletSource;
23-
use crate::events::{ClosureReason, Event, MessageSendEvent, MessageSendEventsProvider};
23+
use crate::events::{ClosureReason, Event, MessageSendEvent};
2424
use crate::ln::chan_utils::ClosingTransaction;
2525
use crate::ln::channel_state::{ChannelDetails, ChannelShutdownState};
2626
use crate::ln::channelmanager::{PaymentId, RAACommitmentOrder, RecipientOnionFields};
27-
use crate::ln::msgs::ChannelMessageHandler;
27+
use crate::ln::msgs::{BaseMessageHandler, ChannelMessageHandler};
2828
use crate::ln::{functional_test_utils::*, msgs};
2929
use crate::sign::ecdsa::EcdsaChannelSigner;
3030
use crate::sign::SignerProvider;

lightning/src/ln/blinded_payment_tests.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ use bitcoin::secp256k1::ecdh::SharedSecret;
1414
use bitcoin::secp256k1::ecdsa::{RecoverableSignature, Signature};
1515
use crate::blinded_path;
1616
use crate::blinded_path::payment::{BlindedPaymentPath, Bolt12RefundContext, PaymentForwardNode, ForwardTlvs, PaymentConstraints, PaymentContext, PaymentRelay, UnauthenticatedReceiveTlvs};
17-
use crate::events::{Event, HTLCDestination, MessageSendEvent, MessageSendEventsProvider, PaymentFailureReason};
17+
use crate::events::{Event, HTLCDestination, MessageSendEvent, PaymentFailureReason};
1818
use crate::ln::types::ChannelId;
1919
use crate::types::payment::{PaymentHash, PaymentSecret};
2020
use crate::ln::channelmanager;
@@ -23,7 +23,7 @@ use crate::types::features::{BlindedHopFeatures, ChannelFeatures, NodeFeatures};
2323
use crate::ln::functional_test_utils::*;
2424
use crate::ln::inbound_payment::ExpandedKey;
2525
use crate::ln::msgs;
26-
use crate::ln::msgs::{ChannelMessageHandler, UnsignedGossipMessage};
26+
use crate::ln::msgs::{BaseMessageHandler, ChannelMessageHandler, UnsignedGossipMessage};
2727
use crate::ln::onion_payment;
2828
use crate::ln::onion_utils;
2929
use crate::ln::onion_utils::INVALID_ONION_BLINDING;

lightning/src/ln/chanmon_update_fail_tests.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,12 @@ use bitcoin::hash_types::BlockHash;
1717
use bitcoin::network::Network;
1818
use crate::chain::channelmonitor::{ANTI_REORG_DELAY, ChannelMonitor};
1919
use crate::chain::{ChannelMonitorUpdateStatus, Listen, Watch};
20-
use crate::events::{Event, MessageSendEvent, MessageSendEventsProvider, PaymentPurpose, ClosureReason, HTLCDestination};
20+
use crate::events::{Event, MessageSendEvent, PaymentPurpose, ClosureReason, HTLCDestination};
2121
use crate::ln::channelmanager::{PaymentId, RAACommitmentOrder, RecipientOnionFields};
2222
use crate::ln::channel::AnnouncementSigsState;
2323
use crate::ln::msgs;
2424
use crate::ln::types::ChannelId;
25-
use crate::ln::msgs::{ChannelMessageHandler, RoutingMessageHandler};
25+
use crate::ln::msgs::{BaseMessageHandler, ChannelMessageHandler, RoutingMessageHandler};
2626
use crate::util::test_channel_signer::TestChannelSigner;
2727
use crate::util::ser::{ReadableArgs, Writeable};
2828
use crate::util::test_utils::TestBroadcaster;

0 commit comments

Comments
 (0)