Change buffer reading implementation (#8)

* Add new implementation an valve protocol refactor

* Refactor minecraft protocol with new bufferer
This commit is contained in:
CosminPerRam 2022-12-29 16:30:24 +02:00 committed by GitHub
parent 91f8bbb9fe
commit b09fa4ada5
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
10 changed files with 455 additions and 353 deletions

View file

@ -1,10 +1,10 @@
use crate::{GDError, GDResult};
use crate::bufferer::{Bufferer, Endianess};
use crate::protocols::minecraft::{LegacyGroup, Response, Server};
use crate::protocols::minecraft::protocol::legacy_v1_6::LegacyV1_6;
use crate::protocols::types::TimeoutSettings;
use crate::socket::{Socket, TcpSocket};
use crate::utils::buffer::{get_string_utf16_be, get_u16_be, get_u8};
use crate::utils::error_by_expected_size;
pub struct LegacyV1_4 {
@ -28,21 +28,20 @@ impl LegacyV1_4 {
fn get_info(&mut self) -> GDResult<Response> {
self.send_initial_request()?;
let buf = self.socket.receive(None)?;
let mut pos = 0;
let mut buffer = Bufferer::new_with_data(Endianess::Big, &self.socket.receive(None)?);
if get_u8(&buf, &mut pos)? != 0xFF {
if buffer.get_u8()? != 0xFF {
return Err(GDError::ProtocolFormat("Expected 0xFF at the begin of the packet.".to_string()));
}
let length = get_u16_be(&buf, &mut pos)? * 2;
error_by_expected_size((length + 3) as usize, buf.len())?;
let length = buffer.get_u16()? * 2;
error_by_expected_size((length + 3) as usize, buffer.data_length())?;
if LegacyV1_6::is_protocol(&buf, &mut pos)? {
return LegacyV1_6::get_response(&buf, &mut pos);
if LegacyV1_6::is_protocol(&mut buffer)? {
return LegacyV1_6::get_response(&mut buffer);
}
let packet_string = get_string_utf16_be(&buf, &mut pos)?;
let packet_string = buffer.get_string_utf16()?;
let split: Vec<&str> = packet_string.split("§").collect();
error_by_expected_size(3, split.len())?;