Package org.ldk.structs
Class RoutingMessageHandler
- java.lang.Object
-
- org.ldk.structs.RoutingMessageHandler
-
public class RoutingMessageHandler extends Object
A trait to describe an object which can receive routing messages. # Implementor DoS Warnings For messages enabled with the `gossip_queries` feature 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.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static interface
RoutingMessageHandler.RoutingMessageHandlerInterface
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description void
destroy()
Destroys the object, freeing associated resources.protected void
finalize()
MessageSendEventsProvider
get_message_send_events_provider()
Gets the underlying MessageSendEventsProvider.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.NodeAnnouncement
get_next_node_announcement(NodeId 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`. 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.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.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.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_id`s for the requested range of blocks.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_id`s.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.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.static RoutingMessageHandler
new_impl(RoutingMessageHandler.RoutingMessageHandlerInterface arg, MessageSendEventsProvider.MessageSendEventsProviderInterface MessageSendEventsProvider_impl)
Result_NoneNoneZ
peer_connected(byte[] their_node_id, Init init, boolean inbound)
Called when a connection is established with a peer.boolean
processing_queue_high()
Indicates that there are a large number of [`ChannelAnnouncement`] (or other) messages pending some async action.InitFeatures
provided_init_features(byte[] their_node_id)
Gets the init feature flags which should be sent to the given peer.NodeFeatures
provided_node_features()
Gets the node feature flags which this handler itself supports.
-
-
-
Method Detail
-
finalize
protected void finalize() throws Throwable
-
destroy
public void destroy()
Destroys the object, freeing associated resources. After this call, any access to this object may result in a SEGFAULT or worse. You should generally NEVER call this method. You should let the garbage collector do this for you when it finalizes objects. However, it may be useful for types which represent locks and should be closed immediately to avoid holding locks until the GC runs.
-
new_impl
public static RoutingMessageHandler new_impl(RoutingMessageHandler.RoutingMessageHandlerInterface arg, MessageSendEventsProvider.MessageSendEventsProviderInterface MessageSendEventsProvider_impl)
-
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 NodeId 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 Result_NoneNoneZ peer_connected(byte[] their_node_id, Init init, boolean inbound)
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. May return an `Err(())` if the features the peer supports are not sufficient to communicate with us. Implementors should be somewhat conservative about doing so, however, as other message handlers may still wish to communicate with this peer.
-
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_id`s 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_id`s.
-
processing_queue_high
public boolean processing_queue_high()
Indicates that there are a large number of [`ChannelAnnouncement`] (or other) messages pending some async action. While there is no guarantee of the rate of future messages, the caller should seek to reduce the rate of new gossip messages handled, especially [`ChannelAnnouncement`]s.
-
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`].
-
-