internet 0.1.0

Network library for rust
Documentation
//!

use crate::{Buf, BufMut, BufResult, Codec, Cursor};

// [[RFC 2246: Section A.1], [RFC 2246: Section ...]]
// struct {
//     uint8 major, minor;
// } ProtocolVersion;
///
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub struct ProtocolVersion {
    ///
    pub major: u8,
    ///
    pub minor: u8,
}

impl ProtocolVersion {
    ///
    pub const TLS10: ProtocolVersion = ProtocolVersion {
        major: 0x03,
        minor: 0x01,
    };
    ///
    pub const TLS11: ProtocolVersion = ProtocolVersion {
        major: 0x03,
        minor: 0x02,
    };
    ///
    pub const TLS12: ProtocolVersion = ProtocolVersion {
        major: 0x03,
        minor: 0x03,
    };
    ///
    pub const TLS13: ProtocolVersion = ProtocolVersion {
        major: 0x03,
        minor: 0x04,
    };
}

impl Codec for ProtocolVersion {
    fn encode<W: BufMut>(&self, writer: &mut Cursor<W>, _: ()) -> BufResult<()> {
        self.major.encode(writer, ())?;
        self.minor.encode(writer, ())
    }

    fn decode<R: Buf>(reader: &mut Cursor<R>, _: ()) -> BufResult<Self> {
        let major = u8::decode(reader, ())?;
        let minor = u8::decode(reader, ())?;
        Ok(Self { major, minor })
    }
}

#[cfg(test)]
mod tests {
    #[test]
    fn test() {}
}