From 4c1824401c2dd97b3ad0d0917698a5fb2d0f7add Mon Sep 17 00:00:00 2001 From: MeexReay Date: Sun, 12 May 2024 01:58:09 +0300 Subject: [PATCH] read bytes fix + 0.1.3 ver --- Cargo.toml | 2 +- src/lib.rs | 30 +++++++++++++++++------------- src/main.rs | 6 +++--- 3 files changed, 21 insertions(+), 17 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 9bb2d12..6a849fa 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -7,7 +7,7 @@ license-file = "LICENSE" readme = "README.md" keywords = ["minecraft", "protocol", "packets", "lightweight"] -version = "0.1.2" +version = "0.1.3" edition = "2021" [dependencies] diff --git a/src/lib.rs b/src/lib.rs index cf2579e..e5a1ab2 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -79,23 +79,12 @@ impl Packet { let bytes = s.as_bytes(); self.write_usize_varint(bytes.len())?; - - for b in bytes { - self.write(*b)?; - } - - Ok(()) + self.write_bytes(bytes) } pub fn read_string(&mut self) -> Result { let size = self.read_usize_varint()?; - let mut bytes: Vec = vec![0; size]; - - for _ in 0..size { - bytes.push(self.read()?); - } - - match String::from_utf8(bytes) { + match String::from_utf8(self.read_bytes(size)?) { Ok(i) => Ok(i), Err(_) => Err(ProtocolError::StringParseError) } @@ -107,6 +96,21 @@ impl Packet { Err(_) => Err(ProtocolError::UnsignedShortError), } } + + pub fn write_bytes(&mut self, bytes: &[u8]) -> Result<(), ProtocolError> { + match Write::write_all(&mut self.buffer, bytes) { + Ok(_) => Ok(()), + Err(_) => Err(ProtocolError::WriteError), + } + } + + pub fn read_bytes(&mut self, size: usize) -> Result, ProtocolError> { + let mut bytes = vec![0; size]; + match Read::read(&mut self.buffer, &mut bytes) { + Ok(_) => Ok(bytes), + Err(_) => Err(ProtocolError::WriteError) + } + } } pub struct MinecraftConnection { diff --git a/src/main.rs b/src/main.rs index 77a5946..f7ddf74 100644 --- a/src/main.rs +++ b/src/main.rs @@ -33,10 +33,10 @@ fn read_status_response(conn: &mut MCConn) -> Result