Trait lnp::extension::Extension

source ·
pub trait Extension<N: Nomenclature> {
    // Required methods
    fn identity(&self) -> N;
    fn update_from_peer(
        &mut self,
        message: &<N as Nomenclature>::PeerMessage
    ) -> Result<(), <N as Nomenclature>::Error>;
    fn update_from_local(
        &mut self,
        message: &<N as Nomenclature>::UpdateMessage
    ) -> Result<(), <N as Nomenclature>::Error>;
    fn load_state(&mut self, state: &N::State);
    fn store_state(&self, state: &mut N::State);

    // Provided method
    fn state_change(
        &mut self,
        request: &<N as Nomenclature>::UpdateRequest,
        message: &mut <N as Nomenclature>::PeerMessage
    ) -> Result<(), <N as Nomenclature>::Error> { ... }
}

Required Methods§

source

fn identity(&self) -> N

source

fn update_from_peer( &mut self, message: &<N as Nomenclature>::PeerMessage ) -> Result<(), <N as Nomenclature>::Error>

Updates extension state from the data taken from the message received from the remote peer

source

fn update_from_local( &mut self, message: &<N as Nomenclature>::UpdateMessage ) -> Result<(), <N as Nomenclature>::Error>

Updates extension state from some local data

source

fn load_state(&mut self, state: &N::State)

source

fn store_state(&self, state: &mut N::State)

Provided Methods§

source

fn state_change( &mut self, request: &<N as Nomenclature>::UpdateRequest, message: &mut <N as Nomenclature>::PeerMessage ) -> Result<(), <N as Nomenclature>::Error>

Perform a sate change and produce a message which should be communicated to peers notifying them about the state change

Implementors§

source§

impl Extension<BoltExt> for AnchorOutputs

source§

impl Extension<BoltExt> for BoltChannel

source§

impl Extension<BoltExt> for Htlc

source§

impl Extension<BoltExt> for Bip96

source§

impl Extension<GossipExt> for DirectRouter

source§

impl Extension<GossipExt> for GossipRouter

source§

impl<N> Extension<N> for Channel<N>where N: 'static + Nomenclature, N::State: State,

Channel is the extension to itself :) so it receives the same input as any other extension and just forwards it to them

source§

impl<N> Extension<N> for Router<N>where N: Nomenclature + Nomenclature,