pub trait ProtocolName {
// Required method
fn protocol_name(&self) -> &[u8] ⓘ;
}
Expand description
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 ProtocolName::protocol_name
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§
sourcefn protocol_name(&self) -> &[u8] ⓘ
fn protocol_name(&self) -> &[u8] ⓘ
The protocol name as bytes. Transmitted on the network.
Note: Valid protocol names must start with /
and
not exceed 140 bytes in length.