Struct BootstrapInfo

Source
pub struct BootstrapInfo {
    pub version: u32,
    pub motd: Vec<u8>,
}
Expand description

Sent by both client and server, only server will respond. When server receives this packet it may respond with the version of the library plus MoTD (message of the day). The max length of MoTD is 256 bytes so the max packet lenght of server BootstrapInfo is 261=(1+4+256) bytes.

Client must send a BootstrapInfo of exactly 78 bytes, the only 1 field is required: packet type which is filled automatically. So version may be filled with any value, so does MoTD, but it has to be exactly 73=(78-1-4) bytes long. The server should check that the size of the packet is exactly 78 bytes long (or MoTD=73 bytes filled with any values). Frankly speaking, there should be neither version nor motd fields in the request version, the serialized form should be 1 byte with packet type + (78-1) bytes of trash, but this implementation is simplified.

Serialized form:

LengthContents
10xF0
4Version in BigEndian
variableMoTD, must not longer than 256 bytes

Fields§

§version: u32

The version of DHT server

§motd: Vec<u8>

Message of the day

Trait Implementations§

Source§

impl Clone for BootstrapInfo

Source§

fn clone(&self) -> BootstrapInfo

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for BootstrapInfo

Source§

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

Formats the value using the given formatter. Read more
Source§

impl FromBytes for BootstrapInfo

Source§

fn from_bytes(i: &[u8]) -> IResult<&[u8], BootstrapInfo, (&[u8], ErrorKind)>

Deserialize struct using nom from raw bytes
Source§

impl PartialEq for BootstrapInfo

Source§

fn eq(&self, other: &BootstrapInfo) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl ToBytes for BootstrapInfo

Source§

fn to_bytes<'a>( &self, buf: (&'a mut [u8], usize), ) -> Result<(&'a mut [u8], usize), GenError>

Serialize struct into raw bytes using cookie_factory
Source§

impl Eq for BootstrapInfo

Source§

impl StructuralPartialEq for BootstrapInfo

Auto Trait Implementations§

Blanket Implementations§

Source§

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

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

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

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

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

Source§

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

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. 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 T
where 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> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

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

Source§

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 T
where U: TryFrom<T>,

Source§

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.