diff options
| author | mat <27899617+mat-1@users.noreply.github.com> | 2022-08-06 07:22:19 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-08-06 02:22:19 -0500 |
| commit | 5a9fca0ca9cdb46f4b866781f219756c89e2293a (patch) | |
| tree | b006e28b91a181734fb9702bb6ec510f5b2af3df /azalea-protocol/src/packets/login | |
| parent | 1d48c3fe34edd4e2295f54bd3d79f81f58c38a8e (diff) | |
| download | azalea-drasl-5a9fca0ca9cdb46f4b866781f219756c89e2293a.tar.xz | |
Better errors (#14)
* make reading use thiserror
* finish implementing all the error things
* clippy warnings related to ok_or
* fix some errors in other places
* thiserror in more places
* don't use closures in a couple places
* errors in writing packet
* rip backtraces
* change some BufReadError::Custom to UnexpectedEnumVariant
* Errors say what packet is bad
* error on leftover data and fix
it wasn't reading the properties for gameprofile
Diffstat (limited to 'azalea-protocol/src/packets/login')
3 files changed, 7 insertions, 30 deletions
diff --git a/azalea-protocol/src/packets/login/clientbound_game_profile_packet.rs b/azalea-protocol/src/packets/login/clientbound_game_profile_packet.rs index 9d9ce35b..93421cc2 100755 --- a/azalea-protocol/src/packets/login/clientbound_game_profile_packet.rs +++ b/azalea-protocol/src/packets/login/clientbound_game_profile_packet.rs @@ -2,34 +2,11 @@ use std::io::{Read, Write}; use super::ClientboundLoginPacket; use azalea_auth::game_profile::GameProfile; -use azalea_buf::{McBufReadable, Readable, SerializableUuid, Writable}; +use azalea_buf::{BufReadError, McBuf, McBufReadable, Readable, SerializableUuid, Writable}; +use packet_macros::ClientboundLoginPacket; use uuid::Uuid; -#[derive(Clone, Debug)] +#[derive(Clone, Debug, McBuf, ClientboundLoginPacket)] pub struct ClientboundGameProfilePacket { pub game_profile: GameProfile, } - -// TODO: add derives to GameProfile and have an impl McBufReadable/Writable for GameProfile -impl ClientboundGameProfilePacket { - pub fn get(self) -> ClientboundLoginPacket { - ClientboundLoginPacket::ClientboundGameProfilePacket(self) - } - - pub fn write(&self, buf: &mut impl Write) -> Result<(), std::io::Error> { - for n in self.game_profile.uuid.to_int_array() { - buf.write_int(n as i32).unwrap(); - } - buf.write_utf(self.game_profile.name.as_str()).unwrap(); - Ok(()) - } - - pub fn read(buf: &mut impl Read) -> Result<ClientboundLoginPacket, String> { - let uuid = Uuid::read_from(buf)?; - let name = buf.read_utf_with_len(16)?; - Ok(ClientboundGameProfilePacket { - game_profile: GameProfile::new(uuid, name), - } - .get()) - } -} diff --git a/azalea-protocol/src/packets/login/clientbound_login_compression_packet.rs b/azalea-protocol/src/packets/login/clientbound_login_compression_packet.rs index 39314041..26321f34 100755 --- a/azalea-protocol/src/packets/login/clientbound_login_compression_packet.rs +++ b/azalea-protocol/src/packets/login/clientbound_login_compression_packet.rs @@ -3,7 +3,7 @@ use std::{ io::{Read, Write}, }; -use azalea_buf::{Readable, Writable}; +use azalea_buf::{BufReadError, Readable, Writable}; use super::ClientboundLoginPacket; @@ -22,7 +22,7 @@ impl ClientboundLoginCompressionPacket { Ok(()) } - pub fn read(buf: &mut impl Read) -> Result<ClientboundLoginPacket, String> { + pub fn read(buf: &mut impl Read) -> Result<ClientboundLoginPacket, BufReadError> { let compression_threshold = buf.read_varint()?; Ok(ClientboundLoginCompressionPacket { diff --git a/azalea-protocol/src/packets/login/serverbound_key_packet.rs b/azalea-protocol/src/packets/login/serverbound_key_packet.rs index 62dc6252..54f268e7 100644 --- a/azalea-protocol/src/packets/login/serverbound_key_packet.rs +++ b/azalea-protocol/src/packets/login/serverbound_key_packet.rs @@ -1,4 +1,4 @@ -use azalea_buf::McBuf; +use azalea_buf::{BufReadError, McBuf}; use azalea_crypto::SaltSignaturePair; use packet_macros::ServerboundLoginPacket; use std::io::{Read, Write}; @@ -18,7 +18,7 @@ pub enum NonceOrSaltSignature { } impl McBufReadable for NonceOrSaltSignature { - fn read_from(buf: &mut impl Read) -> Result<Self, String> { + fn read_from(buf: &mut impl Read) -> Result<Self, BufReadError> { let is_nonce = bool::read_from(buf)?; if is_nonce { Ok(NonceOrSaltSignature::Nonce(Vec::<u8>::read_from(buf)?)) |
