pub trait OnionMessageHandler: OnionMessageProvider {
    // Required methods
    fn handle_onion_message(&self, peer_node_id: &PublicKey, msg: &OnionMessage);
    fn peer_connected(
        &self,
        their_node_id: &PublicKey,
        init: &Init,
        inbound: bool
    ) -> Result<(), ()>;
    fn peer_disconnected(&self, their_node_id: &PublicKey);
    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§

source

fn handle_onion_message(&self, peer_node_id: &PublicKey, msg: &OnionMessage)

Handle an incoming onion_message message from the given peer.

source

fn peer_connected( &self, their_node_id: &PublicKey, init: &Init, inbound: bool ) -> 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.

source

fn peer_disconnected(&self, their_node_id: &PublicKey)

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.

source

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.

source

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.

Implementors§