[][src]Trait libp2p_core::upgrade::ProtocolName

pub trait ProtocolName {
    fn protocol_name(&self) -> &[u8];
}

Types serving as protocol names.

Context

In situations where we provide a list of protocols that we support, the elements of that list are required to implement the ProtocolName trait.

Libp2p will call the ProtocolName::protocol_name trait method on each element of that list, and transmit the returned value on the network. If the remote accepts a given protocol, the element serves as the return value of the function that performed the negotiation.

Example

use libp2p_core::ProtocolName;

enum MyProtocolName {
    Version1,
    Version2,
    Version3,
}

impl ProtocolName for MyProtocolName {
    fn protocol_name(&self) -> &[u8] {
        match *self {
            MyProtocolName::Version1 => b"/myproto/1.0",
            MyProtocolName::Version2 => b"/myproto/2.0",
            MyProtocolName::Version3 => b"/myproto/3.0",
        }
    }
}

Required methods

fn protocol_name(&self) -> &[u8]

The protocol name as bytes. Transmitted on the network.

Loading content...

Implementors

impl<A: ProtocolName, B: ProtocolName> ProtocolName for EitherName<A, B>[src]

impl<T: AsRef<[u8]>> ProtocolName for T[src]

Loading content...