mirror of
https://github.com/fluencelabs/rust-libp2p
synced 2025-05-03 14:42:16 +00:00
Add some doc to ProtocolName (#1197)
* Add some doc to ProtocolName * Update core/src/upgrade/mod.rs Co-Authored-By: Roman Borschel <romanb@users.noreply.github.com>
This commit is contained in:
parent
dfbf5b65c5
commit
2802232d5a
@ -81,8 +81,40 @@ pub use self::{
|
|||||||
};
|
};
|
||||||
|
|
||||||
/// Types serving as protocol names.
|
/// 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",
|
||||||
|
/// }
|
||||||
|
/// }
|
||||||
|
/// }
|
||||||
|
/// ```
|
||||||
|
///
|
||||||
pub trait ProtocolName {
|
pub trait ProtocolName {
|
||||||
/// The protocol name as bytes.
|
/// The protocol name as bytes. Transmitted on the network.
|
||||||
fn protocol_name(&self) -> &[u8];
|
fn protocol_name(&self) -> &[u8];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user