Skip to content

Commit d95f145

Browse files
committed
Add utility constructors to PeerHandler to use a dummy handler
1 parent 825a238 commit d95f145

File tree

1 file changed

+38
-0
lines changed

1 file changed

+38
-0
lines changed

lightning/src/ln/peer_handler.rs

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -353,6 +353,44 @@ macro_rules! encode_msg {
353353
}}
354354
}
355355

356+
impl<Descriptor: SocketDescriptor, CM: Deref, L: Deref> PeerManager<Descriptor, CM, IgnoringMessageHandler, L> where
357+
CM::Target: ChannelMessageHandler,
358+
L::Target: Logger {
359+
/// Constructs a new PeerManager with the given ChannelMessageHandler. No routing message
360+
/// handler is used and network graph messages are ignored.
361+
///
362+
/// ephemeral_random_data is used to derive per-connection ephemeral keys and must be
363+
/// cryptographically secure random bytes.
364+
///
365+
/// (C-not exported) as we can't export a PeerManager with a dummy route handler
366+
pub fn new_channel_only(channel_message_handler: CM, our_node_secret: SecretKey, ephemeral_random_data: &[u8; 32], logger: L) -> Self {
367+
Self::new(MessageHandler {
368+
chan_handler: channel_message_handler,
369+
route_handler: IgnoringMessageHandler{},
370+
}, our_node_secret, ephemeral_random_data, logger)
371+
}
372+
}
373+
374+
impl<Descriptor: SocketDescriptor, RM: Deref, L: Deref> PeerManager<Descriptor, ErroringMessageHandler, RM, L> where
375+
RM::Target: RoutingMessageHandler,
376+
L::Target: Logger {
377+
/// Constructs a new PeerManager with the given RoutingMessageHandler. No channel message
378+
/// handler is used and messages related to channels will be ignored (or generate error
379+
/// messages). Note that some other lightning implementations time-out connections after some
380+
/// time if no channel is built with the peer.
381+
///
382+
/// ephemeral_random_data is used to derive per-connection ephemeral keys and must be
383+
/// cryptographically secure random bytes.
384+
///
385+
/// (C-not exported) as we can't export a PeerManager with a dummy channel handler
386+
pub fn new_routing_only(routing_message_handler: RM, our_node_secret: SecretKey, ephemeral_random_data: &[u8; 32], logger: L) -> Self {
387+
Self::new(MessageHandler {
388+
chan_handler: ErroringMessageHandler::new(),
389+
route_handler: routing_message_handler,
390+
}, our_node_secret, ephemeral_random_data, logger)
391+
}
392+
}
393+
356394
/// Manages and reacts to connection events. You probably want to use file descriptors as PeerIds.
357395
/// PeerIds may repeat, but only after socket_disconnected() has been called.
358396
impl<Descriptor: SocketDescriptor, CM: Deref, RM: Deref, L: Deref> PeerManager<Descriptor, CM, RM, L> where

0 commit comments

Comments
 (0)