Skip to content

Commit 0af6a09

Browse files
committed
f Use dyn RoutingMessageHandler rather than dummy impl
1 parent 64cdc07 commit 0af6a09

File tree

3 files changed

+41
-170
lines changed

3 files changed

+41
-170
lines changed

src/gossip.rs

Lines changed: 0 additions & 154 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,8 @@ use crate::logger::{log_error, log_info, FilesystemLogger, Logger};
22
use crate::types::{GossipSync, NetworkGraph, P2PGossipSync, RapidGossipSync};
33
use crate::Error;
44

5-
use lightning::events::MessageSendEventsProvider;
6-
use lightning::ln::features::{InitFeatures, NodeFeatures};
7-
use lightning::ln::msgs as ldk_msgs;
8-
use lightning::ln::msgs::RoutingMessageHandler;
9-
use lightning::routing::gossip::NodeId;
105
use lightning::routing::utxo::UtxoLookup;
116

12-
use bitcoin::secp256k1::PublicKey;
13-
147
use std::sync::atomic::{AtomicU32, Ordering};
158
use std::sync::Arc;
169

@@ -95,150 +88,3 @@ impl GossipSource {
9588
}
9689
}
9790
}
98-
99-
impl MessageSendEventsProvider for GossipSource {
100-
fn get_and_clear_pending_msg_events(&self) -> Vec<lightning::events::MessageSendEvent> {
101-
match self {
102-
GossipSource::P2PNetwork { gossip_sync, .. } => {
103-
gossip_sync.get_and_clear_pending_msg_events()
104-
}
105-
GossipSource::RapidGossipSync { .. } => Vec::new(),
106-
}
107-
}
108-
}
109-
110-
impl RoutingMessageHandler for GossipSource {
111-
fn handle_node_announcement(
112-
&self, msg: &ldk_msgs::NodeAnnouncement,
113-
) -> Result<bool, ldk_msgs::LightningError> {
114-
match self {
115-
GossipSource::P2PNetwork { gossip_sync, .. } => {
116-
gossip_sync.handle_node_announcement(msg)
117-
}
118-
GossipSource::RapidGossipSync { .. } => Ok(false),
119-
}
120-
}
121-
122-
fn handle_channel_announcement(
123-
&self, msg: &ldk_msgs::ChannelAnnouncement,
124-
) -> Result<bool, ldk_msgs::LightningError> {
125-
match self {
126-
GossipSource::P2PNetwork { gossip_sync, .. } => {
127-
gossip_sync.handle_channel_announcement(msg)
128-
}
129-
GossipSource::RapidGossipSync { .. } => Ok(false),
130-
}
131-
}
132-
133-
fn handle_channel_update(
134-
&self, msg: &ldk_msgs::ChannelUpdate,
135-
) -> Result<bool, ldk_msgs::LightningError> {
136-
match self {
137-
GossipSource::P2PNetwork { gossip_sync, .. } => gossip_sync.handle_channel_update(msg),
138-
GossipSource::RapidGossipSync { .. } => Ok(false),
139-
}
140-
}
141-
142-
fn get_next_channel_announcement(
143-
&self, starting_point: u64,
144-
) -> Option<(
145-
ldk_msgs::ChannelAnnouncement,
146-
Option<ldk_msgs::ChannelUpdate>,
147-
Option<ldk_msgs::ChannelUpdate>,
148-
)> {
149-
match self {
150-
GossipSource::P2PNetwork { gossip_sync, .. } => {
151-
gossip_sync.get_next_channel_announcement(starting_point)
152-
}
153-
GossipSource::RapidGossipSync { .. } => None,
154-
}
155-
}
156-
157-
fn get_next_node_announcement(
158-
&self, starting_point: Option<&NodeId>,
159-
) -> Option<ldk_msgs::NodeAnnouncement> {
160-
match self {
161-
GossipSource::P2PNetwork { gossip_sync, .. } => {
162-
gossip_sync.get_next_node_announcement(starting_point)
163-
}
164-
GossipSource::RapidGossipSync { .. } => None,
165-
}
166-
}
167-
168-
fn peer_connected(
169-
&self, their_node_id: &PublicKey, init: &ldk_msgs::Init, inbound: bool,
170-
) -> Result<(), ()> {
171-
match self {
172-
GossipSource::P2PNetwork { gossip_sync, .. } => {
173-
gossip_sync.peer_connected(their_node_id, init, inbound)
174-
}
175-
GossipSource::RapidGossipSync { .. } => Ok(()),
176-
}
177-
}
178-
179-
fn handle_reply_channel_range(
180-
&self, their_node_id: &PublicKey, msg: ldk_msgs::ReplyChannelRange,
181-
) -> Result<(), ldk_msgs::LightningError> {
182-
match self {
183-
GossipSource::P2PNetwork { gossip_sync, .. } => {
184-
gossip_sync.handle_reply_channel_range(their_node_id, msg)
185-
}
186-
GossipSource::RapidGossipSync { .. } => Ok(()),
187-
}
188-
}
189-
190-
fn handle_reply_short_channel_ids_end(
191-
&self, their_node_id: &PublicKey, msg: ldk_msgs::ReplyShortChannelIdsEnd,
192-
) -> Result<(), ldk_msgs::LightningError> {
193-
match self {
194-
GossipSource::P2PNetwork { gossip_sync, .. } => {
195-
gossip_sync.handle_reply_short_channel_ids_end(their_node_id, msg)
196-
}
197-
GossipSource::RapidGossipSync { .. } => Ok(()),
198-
}
199-
}
200-
201-
fn handle_query_channel_range(
202-
&self, their_node_id: &PublicKey, msg: ldk_msgs::QueryChannelRange,
203-
) -> Result<(), ldk_msgs::LightningError> {
204-
match self {
205-
GossipSource::P2PNetwork { gossip_sync, .. } => {
206-
gossip_sync.handle_query_channel_range(their_node_id, msg)
207-
}
208-
GossipSource::RapidGossipSync { .. } => Ok(()),
209-
}
210-
}
211-
212-
fn handle_query_short_channel_ids(
213-
&self, their_node_id: &PublicKey, msg: ldk_msgs::QueryShortChannelIds,
214-
) -> Result<(), ldk_msgs::LightningError> {
215-
match self {
216-
GossipSource::P2PNetwork { gossip_sync, .. } => {
217-
gossip_sync.handle_query_short_channel_ids(their_node_id, msg)
218-
}
219-
GossipSource::RapidGossipSync { .. } => Ok(()),
220-
}
221-
}
222-
223-
fn provided_node_features(&self) -> NodeFeatures {
224-
match self {
225-
GossipSource::P2PNetwork { gossip_sync, .. } => gossip_sync.provided_node_features(),
226-
GossipSource::RapidGossipSync { .. } => NodeFeatures::empty(),
227-
}
228-
}
229-
fn provided_init_features(&self, their_node_id: &PublicKey) -> InitFeatures {
230-
match self {
231-
GossipSource::P2PNetwork { gossip_sync, .. } => {
232-
gossip_sync.provided_init_features(their_node_id)
233-
}
234-
GossipSource::RapidGossipSync { .. } => InitFeatures::empty(),
235-
}
236-
}
237-
238-
fn processing_queue_high(&self) -> bool {
239-
match self {
240-
GossipSource::P2PNetwork { gossip_sync, .. } => gossip_sync.processing_queue_high(),
241-
GossipSource::RapidGossipSync { .. } => false,
242-
}
243-
}
244-
}

src/lib.rs

Lines changed: 39 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,7 @@ mod wallet;
9090
pub use bip39;
9191
pub use bitcoin;
9292
pub use lightning;
93+
use lightning::ln::msgs::RoutingMessageHandler;
9394
pub use lightning_invoice;
9495

9596
pub use error::Error as NodeError;
@@ -104,7 +105,8 @@ use payment_store::PaymentStore;
104105
pub use payment_store::{PaymentDetails, PaymentDirection, PaymentStatus};
105106
use peer_store::{PeerInfo, PeerStore};
106107
use types::{
107-
ChainMonitor, ChannelManager, KeysManager, NetworkGraph, OnionMessenger, PeerManager, Scorer,
108+
ChainMonitor, ChannelManager, GossipSync, KeysManager, NetworkGraph, OnionMessenger,
109+
PeerManager, Scorer,
108110
};
109111
pub use types::{ChannelDetails, ChannelId, PeerDetails, UserChannelId};
110112
use wallet::Wallet;
@@ -546,21 +548,44 @@ impl Builder {
546548
)),
547549
};
548550

549-
let msg_handler = MessageHandler {
550-
chan_handler: Arc::clone(&channel_manager),
551-
route_handler: Arc::clone(&gossip_source),
552-
onion_message_handler: onion_messenger,
551+
let peer_manager = match gossip_source.as_gossip_sync() {
552+
GossipSync::P2P(p2p_gossip_sync) => {
553+
let msg_handler = MessageHandler {
554+
chan_handler: Arc::clone(&channel_manager),
555+
route_handler: Arc::clone(&p2p_gossip_sync)
556+
as Arc<dyn RoutingMessageHandler + Sync + Send>,
557+
onion_message_handler: onion_messenger,
558+
};
559+
Arc::new(PeerManager::new(
560+
msg_handler,
561+
cur_time.as_secs().try_into().expect("System time error"),
562+
&ephemeral_bytes,
563+
Arc::clone(&logger),
564+
IgnoringMessageHandler {},
565+
Arc::clone(&keys_manager),
566+
))
567+
}
568+
GossipSync::Rapid(_) => {
569+
let msg_handler = MessageHandler {
570+
chan_handler: Arc::clone(&channel_manager),
571+
route_handler: Arc::new(IgnoringMessageHandler {})
572+
as Arc<dyn RoutingMessageHandler + Sync + Send>,
573+
onion_message_handler: onion_messenger,
574+
};
575+
Arc::new(PeerManager::new(
576+
msg_handler,
577+
cur_time.as_secs().try_into().expect("System time error"),
578+
&ephemeral_bytes,
579+
Arc::clone(&logger),
580+
IgnoringMessageHandler {},
581+
Arc::clone(&keys_manager),
582+
))
583+
}
584+
GossipSync::None => {
585+
panic!();
586+
}
553587
};
554588

555-
let peer_manager = Arc::new(PeerManager::new(
556-
msg_handler,
557-
cur_time.as_secs().try_into().expect("System time error"),
558-
&ephemeral_bytes,
559-
Arc::clone(&logger),
560-
IgnoringMessageHandler {},
561-
Arc::clone(&keys_manager),
562-
));
563-
564589
// Init payment info storage
565590
let payment_store = match io::utils::read_payments(Arc::clone(&kv_store)) {
566591
Ok(payments) => {

src/types.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
use crate::error::Error;
2-
use crate::gossip::GossipSource;
32
use crate::hex_utils;
43
use crate::io::fs_store::FilesystemStore;
54
use crate::logger::FilesystemLogger;
@@ -9,6 +8,7 @@ use crate::UniffiCustomTypeConverter;
98
use lightning::chain::chainmonitor;
109
use lightning::chain::keysinterface::InMemorySigner;
1110
use lightning::ln::channelmanager::ChannelDetails as LdkChannelDetails;
11+
use lightning::ln::msgs::RoutingMessageHandler;
1212
use lightning::ln::peer_handler::IgnoringMessageHandler;
1313
use lightning::ln::{PaymentHash, PaymentPreimage, PaymentSecret};
1414
use lightning::routing::gossip;
@@ -41,7 +41,7 @@ pub(crate) type ChainMonitor = chainmonitor::ChainMonitor<
4141
pub(crate) type PeerManager = lightning::ln::peer_handler::PeerManager<
4242
SocketDescriptor,
4343
Arc<ChannelManager>,
44-
Arc<GossipSource>,
44+
Arc<dyn RoutingMessageHandler + Send + Sync>,
4545
Arc<OnionMessenger>,
4646
Arc<FilesystemLogger>,
4747
IgnoringMessageHandler,

0 commit comments

Comments
 (0)