Class RoutingMessageHandler


  • public class RoutingMessageHandler
    extends Object
    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.
    • Method Detail

      • get_message_send_events_provider

        public MessageSendEventsProvider get_message_send_events_provider()
        Gets the underlying MessageSendEventsProvider.
      • handle_node_announcement

        public Result_boolLightningErrorZ handle_node_announcement​(NodeAnnouncement msg)
        Handle an incoming node_announcement message, returning true if it should be forwarded on, false or returning an Err otherwise.
      • handle_channel_announcement

        public Result_boolLightningErrorZ handle_channel_announcement​(ChannelAnnouncement msg)
        Handle a channel_announcement message, returning true if it should be forwarded on, false or returning an Err otherwise.
      • handle_channel_update

        public Result_boolLightningErrorZ handle_channel_update​(ChannelUpdate msg)
        Handle an incoming channel_update message, returning true if it should be forwarded on, false or returning an Err otherwise.
      • get_next_channel_announcement

        public Option_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ get_next_channel_announcement​(long starting_point)
        Gets 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 announcements for a single channel.
      • get_next_node_announcement

        @Nullable
        public NodeAnnouncement get_next_node_announcement​(@Nullable
                                                           byte[] starting_point)
        Gets a node announcement required to dump our routing table to a remote node, starting at the node *after* the provided pubkey and including up to one announcement immediately higher (as defined by ::cmp) than starting_point. If None is provided for starting_point, we start at the first node. Note that starting_point (or a relevant inner pointer) may be NULL or all-0s to represent None Note that the return value (or a relevant inner pointer) may be NULL or all-0s to represent None
      • peer_connected

        public void peer_connected​(byte[] their_node_id,
                                   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.
      • handle_reply_channel_range

        public Result_NoneLightningErrorZ handle_reply_channel_range​(byte[] their_node_id,
                                                                     ReplyChannelRange msg)
        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.
      • handle_reply_short_channel_ids_end

        public Result_NoneLightningErrorZ handle_reply_short_channel_ids_end​(byte[] their_node_id,
                                                                             ReplyShortChannelIdsEnd msg)
        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.
      • handle_query_channel_range

        public Result_NoneLightningErrorZ handle_query_channel_range​(byte[] their_node_id,
                                                                     QueryChannelRange msg)
        Handles when a peer asks us to send a list of short_channel_ids for the requested range of blocks.
      • handle_query_short_channel_ids

        public Result_NoneLightningErrorZ handle_query_short_channel_ids​(byte[] their_node_id,
                                                                         QueryShortChannelIds msg)
        Handles when a peer asks us to send routing gossip messages for a list of short_channel_ids.
      • provided_node_features

        public NodeFeatures provided_node_features()
        Gets the node feature flags which this handler itself supports. All available handlers are queried similarly and their feature flags are OR'd together to form the [`NodeFeatures`] which are broadcasted in our [`NodeAnnouncement`] message.
      • provided_init_features

        public InitFeatures provided_init_features​(byte[] their_node_id)
        Gets the init feature flags which should be sent to the given peer. All available handlers are queried similarly and their feature flags are OR'd together to form the [`InitFeatures`] which are sent in our [`Init`] message. Note that this method is called before [`Self::peer_connected`].