[Protocol] Fix Minecraft Java query not being able to specify a hostname (#91)

* Make initial fix

* Fix imports

* Rename query_address to hostname and add this to the mc example

* Fix master_querant example not compiling

* Add extra safety on converting strings to Minecraft Varint strings

* Add docs to RequestSettings

* Fix formatting
This commit is contained in:
CosminPerRam 2023-09-01 22:21:08 +03:00 committed by GitHub
parent 211cd5fd5f
commit a56ca45de6
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
8 changed files with 118 additions and 28 deletions

View file

@ -20,16 +20,20 @@ pub trait Socket {
fn send(&mut self, data: &[u8]) -> GDResult<()>;
fn receive(&mut self, size: Option<usize>) -> GDResult<Vec<u8>>;
fn port(&self) -> u16;
}
pub struct TcpSocket {
socket: net::TcpStream,
address: SocketAddr,
}
impl Socket for TcpSocket {
fn new(address: &SocketAddr) -> GDResult<Self> {
Ok(Self {
socket: net::TcpStream::connect(address).map_err(|e| SocketConnect.context(e))?,
address: *address,
})
}
@ -54,6 +58,8 @@ impl Socket for TcpSocket {
Ok(buf)
}
fn port(&self) -> u16 { self.address.port() }
}
pub struct UdpSocket {
@ -96,6 +102,8 @@ impl Socket for UdpSocket {
Ok(buf[.. number_of_bytes_received].to_vec())
}
fn port(&self) -> u16 { self.address.port() }
}
#[cfg(test)]