Skip to content

Commit ba1017c

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 ca40276 commit ba1017c

34 files changed

+613
-634
lines changed

fuzz/src/chanmon_consistency.rs

Lines changed: 2 additions & 2 deletions
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::{
@@ -53,7 +52,8 @@ use lightning::ln::channelmanager::{
5352
use lightning::ln::functional_test_utils::*;
5453
use lightning::ln::inbound_payment::ExpandedKey;
5554
use lightning::ln::msgs::{
56-
self, ChannelMessageHandler, CommitmentUpdate, DecodeError, Init, UpdateAddHTLC,
55+
self, BaseMessageHandler, ChannelMessageHandler, CommitmentUpdate, DecodeError, Init,
56+
UpdateAddHTLC,
5757
};
5858
use lightning::ln::script::ShutdownScript;
5959
use lightning::ln::types::ChannelId;

fuzz/src/onion_message.rs

Lines changed: 1 addition & 1 deletion
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, DecodeError, 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;

lightning-background-processor/src/lib.rs

Lines changed: 2 additions & 4 deletions
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

Lines changed: 3 additions & 1 deletion
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

Lines changed: 1 addition & 1 deletion
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

Lines changed: 15 additions & 23 deletions
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
}
@@ -761,35 +749,39 @@ mod tests {
761749
fn handle_tx_init_rbf(&self, _their_node_id: PublicKey, _msg: &TxInitRbf) {}
762750
fn handle_tx_ack_rbf(&self, _their_node_id: PublicKey, _msg: &TxAckRbf) {}
763751
fn handle_tx_abort(&self, _their_node_id: PublicKey, _msg: &TxAbort) {}
752+
fn handle_channel_reestablish(&self, _their_node_id: PublicKey, _msg: &ChannelReestablish) {
753+
}
754+
fn handle_error(&self, _their_node_id: PublicKey, _msg: &ErrorMessage) {}
755+
fn get_chain_hashes(&self) -> Option<Vec<ChainHash>> {
756+
Some(vec![ChainHash::using_genesis_block(Network::Testnet)])
757+
}
758+
fn message_received(&self) {}
759+
}
760+
impl BaseMessageHandler for MsgHandler {
764761
fn peer_disconnected(&self, their_node_id: PublicKey) {
765762
if their_node_id == self.expected_pubkey {
766763
self.disconnected_flag.store(true, Ordering::SeqCst);
767-
self.pubkey_disconnected.clone().try_send(()).unwrap();
764+
// This method is called twice as we're two message handlers. `try_send` will fail
765+
// the second time.
766+
let _ = self.pubkey_disconnected.clone().try_send(());
768767
}
769768
}
770769
fn peer_connected(
771770
&self, their_node_id: PublicKey, _init_msg: &Init, _inbound: bool,
772771
) -> Result<(), ()> {
773772
if their_node_id == self.expected_pubkey {
774-
self.pubkey_connected.clone().try_send(()).unwrap();
773+
// This method is called twice as we're two message handlers. `try_send` will fail
774+
// the second time.
775+
let _ = self.pubkey_connected.clone().try_send(());
775776
}
776777
Ok(())
777778
}
778-
fn handle_channel_reestablish(&self, _their_node_id: PublicKey, _msg: &ChannelReestablish) {
779-
}
780-
fn handle_error(&self, _their_node_id: PublicKey, _msg: &ErrorMessage) {}
781779
fn provided_node_features(&self) -> NodeFeatures {
782780
NodeFeatures::empty()
783781
}
784782
fn provided_init_features(&self, _their_node_id: PublicKey) -> InitFeatures {
785783
InitFeatures::empty()
786784
}
787-
fn get_chain_hashes(&self) -> Option<Vec<ChainHash>> {
788-
Some(vec![ChainHash::using_genesis_block(Network::Testnet)])
789-
}
790-
fn message_received(&self) {}
791-
}
792-
impl MessageSendEventsProvider for MsgHandler {
793785
fn get_and_clear_pending_msg_events(&self) -> Vec<MessageSendEvent> {
794786
let mut ret = Vec::new();
795787
mem::swap(&mut *self.msg_events.lock().unwrap(), &mut ret);

lightning-persister/src/fs_store.rs

Lines changed: 2 additions & 1 deletion
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

Lines changed: 2 additions & 2 deletions
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

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2626,13 +2626,6 @@ pub enum MessageSendEvent {
26262626
},
26272627
}
26282628

2629-
/// A trait indicating an object may generate message send events
2630-
pub trait MessageSendEventsProvider {
2631-
/// Gets the list of pending events which were generated by previous actions, clearing the list
2632-
/// in the process.
2633-
fn get_and_clear_pending_msg_events(&self) -> Vec<MessageSendEvent>;
2634-
}
2635-
26362629
/// A trait indicating an object may generate events.
26372630
///
26382631
/// Events are processed by passing an [`EventHandler`] to [`process_pending_events`].

lightning/src/ln/async_payments_tests.rs

Lines changed: 2 additions & 5 deletions
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

Lines changed: 2 additions & 2 deletions
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

Lines changed: 2 additions & 2 deletions
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

Lines changed: 2 additions & 2 deletions
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)