Trait 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>