pub trait OnionMessageHandler: OnionMessageProvider {
fn handle_onion_message(&self, peer_node_id: &PublicKey, msg: &OnionMessage);
fn peer_connected(
&self,
their_node_id: &PublicKey,
init: &Init
) -> Result<(), ()>;
fn peer_disconnected(
&self,
their_node_id: &PublicKey,
no_connection_possible: bool
);
fn provided_node_features(&self) -> NodeFeatures;
fn provided_init_features(&self, their_node_id: &PublicKey) -> InitFeatures;
}
Expand description
A trait to describe an object that can receive onion messages.
Required Methods
sourcefn handle_onion_message(&self, peer_node_id: &PublicKey, msg: &OnionMessage)
fn handle_onion_message(&self, peer_node_id: &PublicKey, msg: &OnionMessage)
Handle an incoming onion_message message from the given peer.
sourcefn peer_connected(&self, their_node_id: &PublicKey, init: &Init) -> Result<(), ()>
fn peer_connected(&self, their_node_id: &PublicKey, init: &Init) -> Result<(), ()>
Called when a connection is established with a peer. Can be used to track which peers advertise onion message support and are online.
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.
sourcefn peer_disconnected(
&self,
their_node_id: &PublicKey,
no_connection_possible: bool
)
fn peer_disconnected(
&self,
their_node_id: &PublicKey,
no_connection_possible: bool
)
Indicates a connection to the peer failed/an existing connection was lost. Allows handlers to drop and refuse to forward onion messages to this peer.
Note that in some rare cases this may be called without a corresponding
Self::peer_connected
.
sourcefn provided_node_features(&self) -> NodeFeatures
fn provided_node_features(&self) -> NodeFeatures
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.
sourcefn provided_init_features(&self, their_node_id: &PublicKey) -> InitFeatures
fn provided_init_features(&self, their_node_id: &PublicKey) -> InitFeatures
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
.