pub enum KademliaHandlerEvent<TUserData> {
    ProtocolConfirmed {
        endpoint: ConnectedPoint,
    },
    FindNodeReq {
        key: Vec<u8>,
        request_id: KademliaRequestId,
    },
    FindNodeRes {
        closer_peers: Vec<KadPeer>,
        user_data: TUserData,
    },
    GetProvidersReq {
        key: Key,
        request_id: KademliaRequestId,
    },
    GetProvidersRes {
        closer_peers: Vec<KadPeer>,
        provider_peers: Vec<KadPeer>,
        user_data: TUserData,
    },
    QueryError {
        error: KademliaHandlerQueryErr,
        user_data: TUserData,
    },
    AddProvider {
        key: Key,
        provider: KadPeer,
    },
    GetRecord {
        key: Key,
        request_id: KademliaRequestId,
    },
    GetRecordRes {
        record: Option<Record>,
        closer_peers: Vec<KadPeer>,
        user_data: TUserData,
    },
    PutRecord {
        record: Record,
        request_id: KademliaRequestId,
    },
    PutRecordRes {
        key: Key,
        value: Vec<u8>,
        user_data: TUserData,
    },
}
Expand description

Event produced by the Kademlia handler.

Variants§

§

ProtocolConfirmed

Fields

The configured protocol name has been confirmed by the peer through a successfully negotiated substream.

This event is only emitted once by a handler upon the first successfully negotiated inbound or outbound substream and indicates that the connected peer participates in the Kademlia overlay network identified by the configured protocol name.

§

FindNodeReq

Fields

§key: Vec<u8>

The key for which to locate the closest nodes.

§request_id: KademliaRequestId

Identifier of the request. Needs to be passed back when answering.

Request for the list of nodes whose IDs are the closest to key. The number of nodes returned is not specified, but should be around 20.

§

FindNodeRes

Fields

§closer_peers: Vec<KadPeer>

Results of the request.

§user_data: TUserData

The user data passed to the FindNodeReq.

Response to an KademliaHandlerIn::FindNodeReq.

§

GetProvidersReq

Fields

§key: Key

The key for which providers are requested.

§request_id: KademliaRequestId

Identifier of the request. Needs to be passed back when answering.

Same as FindNodeReq, but should also return the entries of the local providers list for this key.

§

GetProvidersRes

Fields

§closer_peers: Vec<KadPeer>

Nodes closest to the key.

§provider_peers: Vec<KadPeer>

Known providers for this key.

§user_data: TUserData

The user data passed to the GetProvidersReq.

Response to an KademliaHandlerIn::GetProvidersReq.

§

QueryError

Fields

§error: KademliaHandlerQueryErr

The error that happened.

§user_data: TUserData

The user data passed to the query.

An error happened when performing a query.

§

AddProvider

Fields

§key: Key

The key for which the peer is a provider of the associated value.

§provider: KadPeer

The peer that is the provider of the value for key.

The peer announced itself as a provider of a key.

§

GetRecord

Fields

§key: Key

Key for which we should look in the dht

§request_id: KademliaRequestId

Identifier of the request. Needs to be passed back when answering.

Request to get a value from the dht records

§

GetRecordRes

Fields

§record: Option<Record>

The result is present if the key has been found

§closer_peers: Vec<KadPeer>

Nodes closest to the key.

§user_data: TUserData

The user data passed to the GetValue.

Response to a KademliaHandlerIn::GetRecord.

§

PutRecord

Fields

§record: Record
§request_id: KademliaRequestId

Identifier of the request. Needs to be passed back when answering.

Request to put a value in the dht records

§

PutRecordRes

Fields

§key: Key

The key of the stored record.

§value: Vec<u8>

The value of the stored record.

§user_data: TUserData

The user data passed to the PutValue.

Response to a request to store a record.

Trait Implementations§

source§

impl<TUserData: Debug> Debug for KademliaHandlerEvent<TUserData>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl<TUserData> !RefUnwindSafe for KademliaHandlerEvent<TUserData>

§

impl<TUserData> Send for KademliaHandlerEvent<TUserData>where TUserData: Send,

§

impl<TUserData> Sync for KademliaHandlerEvent<TUserData>where TUserData: Sync,

§

impl<TUserData> Unpin for KademliaHandlerEvent<TUserData>where TUserData: Unpin,

§

impl<TUserData> !UnwindSafe for KademliaHandlerEvent<TUserData>

Blanket Implementations§

source§

impl<T> Any for Twhere T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for Twhere U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T> Same<T> for T

§

type Output = T

Should always be Self
source§

impl<T, U> TryFrom<U> for Twhere U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<V, T> VZip<V> for Twhere V: MultiLane<T>,

§

fn vzip(self) -> V