@@ -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.
358396impl < Descriptor : SocketDescriptor , CM : Deref , RM : Deref , L : Deref > PeerManager < Descriptor , CM , RM , L > where
0 commit comments