Trait lightning::ln::msgs::RoutingMessageHandler [−][src]
pub trait RoutingMessageHandler: MessageSendEventsProvider { fn handle_node_announcement(
&self,
msg: &NodeAnnouncement
) -> Result<bool, LightningError>; fn handle_channel_announcement(
&self,
msg: &ChannelAnnouncement
) -> Result<bool, LightningError>; fn handle_channel_update(
&self,
msg: &ChannelUpdate
) -> Result<bool, LightningError>; fn handle_htlc_fail_channel_update(&self, update: &HTLCFailChannelUpdate); fn get_next_channel_announcements(
&self,
starting_point: u64,
batch_amount: u8
) -> Vec<(ChannelAnnouncement, Option<ChannelUpdate>, Option<ChannelUpdate>)>ⓘ; fn get_next_node_announcements(
&self,
starting_point: Option<&PublicKey>,
batch_amount: u8
) -> Vec<NodeAnnouncement>ⓘ; fn sync_routing_table(&self, their_node_id: &PublicKey, init: &Init); fn handle_reply_channel_range(
&self,
their_node_id: &PublicKey,
msg: ReplyChannelRange
) -> Result<(), LightningError>; fn handle_reply_short_channel_ids_end(
&self,
their_node_id: &PublicKey,
msg: ReplyShortChannelIdsEnd
) -> Result<(), LightningError>; fn handle_query_channel_range(
&self,
their_node_id: &PublicKey,
msg: QueryChannelRange
) -> Result<(), LightningError>; fn handle_query_short_channel_ids(
&self,
their_node_id: &PublicKey,
msg: QueryShortChannelIds
) -> Result<(), LightningError>; }
Expand description
A trait to describe an object which can receive routing messages.
Implementor DoS Warnings
For gossip_queries
messages there are potential DoS vectors when handling
inbound queries. Implementors using an on-disk network graph should be aware of
repeated disk I/O for queries accessing different parts of the network graph.
Required methods
fn handle_node_announcement(
&self,
msg: &NodeAnnouncement
) -> Result<bool, LightningError>
fn handle_node_announcement(
&self,
msg: &NodeAnnouncement
) -> Result<bool, LightningError>
Handle an incoming node_announcement message, returning true if it should be forwarded on, false or returning an Err otherwise.
fn handle_channel_announcement(
&self,
msg: &ChannelAnnouncement
) -> Result<bool, LightningError>
fn handle_channel_announcement(
&self,
msg: &ChannelAnnouncement
) -> Result<bool, LightningError>
Handle a channel_announcement message, returning true if it should be forwarded on, false or returning an Err otherwise.
fn handle_channel_update(
&self,
msg: &ChannelUpdate
) -> Result<bool, LightningError>
fn handle_channel_update(
&self,
msg: &ChannelUpdate
) -> Result<bool, LightningError>
Handle an incoming channel_update message, returning true if it should be forwarded on, false or returning an Err otherwise.
fn handle_htlc_fail_channel_update(&self, update: &HTLCFailChannelUpdate)
fn handle_htlc_fail_channel_update(&self, update: &HTLCFailChannelUpdate)
Handle some updates to the route graph that we learned due to an outbound failed payment.
fn get_next_channel_announcements(
&self,
starting_point: u64,
batch_amount: u8
) -> Vec<(ChannelAnnouncement, Option<ChannelUpdate>, Option<ChannelUpdate>)>ⓘ
fn get_next_channel_announcements(
&self,
starting_point: u64,
batch_amount: u8
) -> Vec<(ChannelAnnouncement, Option<ChannelUpdate>, Option<ChannelUpdate>)>ⓘ
Gets a subset of the channel announcements and updates required to dump our routing table to a remote node, starting at the short_channel_id indicated by starting_point and including the batch_amount entries immediately higher in numerical value than starting_point.
Gets a subset of the node announcements required to dump our routing table to a remote node,
starting at the node after the provided publickey and including batch_amount entries
immediately higher (as defined by
fn sync_routing_table(&self, their_node_id: &PublicKey, init: &Init)
fn sync_routing_table(&self, their_node_id: &PublicKey, init: &Init)
Called when a connection is established with a peer. This can be used to perform routing table synchronization using a strategy defined by the implementor.
fn handle_reply_channel_range(
&self,
their_node_id: &PublicKey,
msg: ReplyChannelRange
) -> Result<(), LightningError>
fn handle_reply_channel_range(
&self,
their_node_id: &PublicKey,
msg: ReplyChannelRange
) -> Result<(), LightningError>
Handles the reply of a query we initiated to learn about channels for a given range of blocks. We can expect to receive one or more replies to a single query.
fn handle_reply_short_channel_ids_end(
&self,
their_node_id: &PublicKey,
msg: ReplyShortChannelIdsEnd
) -> Result<(), LightningError>
fn handle_reply_short_channel_ids_end(
&self,
their_node_id: &PublicKey,
msg: ReplyShortChannelIdsEnd
) -> Result<(), LightningError>
Handles the reply of a query we initiated asking for routing gossip messages for a list of channels. We should receive this message when a node has completed its best effort to send us the pertaining routing gossip messages.
fn handle_query_channel_range(
&self,
their_node_id: &PublicKey,
msg: QueryChannelRange
) -> Result<(), LightningError>
fn handle_query_channel_range(
&self,
their_node_id: &PublicKey,
msg: QueryChannelRange
) -> Result<(), LightningError>
Handles when a peer asks us to send a list of short_channel_ids for the requested range of blocks.
fn handle_query_short_channel_ids(
&self,
their_node_id: &PublicKey,
msg: QueryShortChannelIds
) -> Result<(), LightningError>
fn handle_query_short_channel_ids(
&self,
their_node_id: &PublicKey,
msg: QueryShortChannelIds
) -> Result<(), LightningError>
Handles when a peer asks us to send routing gossip messages for a list of short_channel_ids.
Implementors
impl<C: Deref, L: Deref> RoutingMessageHandler for NetGraphMsgHandler<C, L> where
C::Target: Access,
L::Target: Logger,