From 573537fbfb8a433d06e7d6d538ffd4529e21b13c Mon Sep 17 00:00:00 2001 From: lubeilin <1791778603@qq.com> Date: Thu, 29 Feb 2024 22:25:11 +0800 Subject: [PATCH] =?UTF-8?q?[mio]=20=E4=BD=BF=E7=94=A8io=E7=BB=93=E6=9E=9C?= =?UTF-8?q?=E7=AE=80=E5=8C=96=E5=BC=82=E5=B8=B8=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- vnt/src/protocol/error_packet.rs | 10 +++++----- vnt/src/protocol/mod.rs | 17 +++++++++++------ 2 files changed, 16 insertions(+), 11 deletions(-) diff --git a/vnt/src/protocol/error_packet.rs b/vnt/src/protocol/error_packet.rs index 64971a0..cea9467 100644 --- a/vnt/src/protocol/error_packet.rs +++ b/vnt/src/protocol/error_packet.rs @@ -1,4 +1,4 @@ -use crate::error::*; +use std::io; #[derive(Eq, PartialEq, Copy, Clone, Debug)] pub enum Protocol { @@ -50,7 +50,7 @@ pub enum InErrorPacket { } impl> InErrorPacket { - pub fn new(protocol: u8, buffer: B) -> Result> { + pub fn new(protocol: u8, buffer: B) -> io::Result> { match Protocol::from(protocol) { Protocol::TokenError => Ok(InErrorPacket::TokenError), Protocol::Disconnect => Ok(InErrorPacket::Disconnect), @@ -68,16 +68,16 @@ pub struct ErrorPacket { } impl> ErrorPacket { - pub fn new(buffer: B) -> Result> { + pub fn new(buffer: B) -> io::Result> { Ok(Self { buffer }) } } impl> ErrorPacket { - pub fn message(&self) -> Result { + pub fn message(&self) -> io::Result { match String::from_utf8(self.buffer.as_ref().to_vec()) { Ok(str) => Ok(str), - Err(_) => Err(Error::InvalidPacket), + Err(_) => Err(io::Error::new(io::ErrorKind::Other, "Utf8Error")), } } } diff --git a/vnt/src/protocol/mod.rs b/vnt/src/protocol/mod.rs index f5bfc54..7c57ede 100644 --- a/vnt/src/protocol/mod.rs +++ b/vnt/src/protocol/mod.rs @@ -28,14 +28,14 @@ pub mod service_packet; #[derive(Eq, PartialEq, Copy, Clone, Debug)] pub enum Version { V1, - UnKnow(u8), + Unknown(u8), } impl From for Version { fn from(value: u8) -> Self { match value { 1 => Version::V1, - val => Version::UnKnow(val), + val => Version::Unknown(val), } } } @@ -44,7 +44,7 @@ impl Into for Version { fn into(self) -> u8 { match self { Version::V1 => 1, - Version::UnKnow(val) => val, + Version::Unknown(val) => val, } } } @@ -61,7 +61,7 @@ pub enum Protocol { IpTurn, /// 转发其他数据 OtherTurn, - UnKnow(u8), + Unknown(u8), } impl From for Protocol { @@ -72,7 +72,7 @@ impl From for Protocol { 3 => Protocol::Control, 4 => Protocol::IpTurn, 5 => Protocol::OtherTurn, - val => Protocol::UnKnow(val), + val => Protocol::Unknown(val), } } } @@ -85,7 +85,7 @@ impl Into for Protocol { Protocol::Control => 3, Protocol::IpTurn => 4, Protocol::OtherTurn => 5, - Protocol::UnKnow(val) => val, + Protocol::Unknown(val) => val, } } } @@ -220,6 +220,11 @@ impl + AsMut<[u8]>> NetPacket { pub fn set_ttl(&mut self, ttl: u8) { self.buffer.as_mut()[3] = (self.buffer.as_mut()[3] & MAX_SOURCE) | (MAX_TTL & ttl); } + pub fn incr_ttl(&mut self) -> u8 { + let ttl = self.ttl() - 1; + self.set_ttl(ttl); + ttl + } pub fn set_source_ttl(&mut self, source_ttl: u8) { self.buffer.as_mut()[3] = (source_ttl << 4) | (MAX_TTL & self.buffer.as_ref()[3]); }