mirror of
https://github.com/mat-1/azalea.git
synced 2025-08-02 06:16:04 +00:00
Use ClientIntention over ConnectionProtocol for ClientIntentionPacket (#143)
* fix!: use ClientIntention over ConnectionProtocol for ClientIntentionPacket * chore: remove McBufRead/Writable from ConnectionProtocol * chore: use From over Into for ClientIntention to ConnectionProtocol conversion * chore: organise imports in existing style
This commit is contained in:
parent
84f66a55a5
commit
6553d9510d
6 changed files with 48 additions and 19 deletions
|
@ -51,7 +51,7 @@ use azalea_protocol::{
|
|||
serverbound_login_acknowledged_packet::ServerboundLoginAcknowledgedPacket,
|
||||
ClientboundLoginPacket,
|
||||
},
|
||||
ConnectionProtocol, PROTOCOL_VERSION,
|
||||
ConnectionProtocol, ClientIntention, PROTOCOL_VERSION,
|
||||
},
|
||||
resolver, ServerAddress,
|
||||
};
|
||||
|
@ -358,7 +358,7 @@ impl Client {
|
|||
protocol_version: PROTOCOL_VERSION,
|
||||
hostname: address.host.clone(),
|
||||
port: address.port,
|
||||
intention: ConnectionProtocol::Login,
|
||||
intention: ClientIntention::Login,
|
||||
}
|
||||
.get(),
|
||||
)
|
||||
|
|
|
@ -12,7 +12,7 @@ use azalea_protocol::{
|
|||
serverbound_status_request_packet::ServerboundStatusRequestPacket,
|
||||
ClientboundStatusPacket,
|
||||
},
|
||||
ConnectionProtocol, PROTOCOL_VERSION,
|
||||
ClientIntention, PROTOCOL_VERSION,
|
||||
},
|
||||
resolver, ServerAddress,
|
||||
};
|
||||
|
@ -79,7 +79,7 @@ pub async fn ping_server_with_connection(
|
|||
protocol_version: PROTOCOL_VERSION,
|
||||
hostname: address.host.clone(),
|
||||
port: address.port,
|
||||
intention: ConnectionProtocol::Status,
|
||||
intention: ClientIntention::Status,
|
||||
}
|
||||
.get(),
|
||||
)
|
||||
|
|
|
@ -16,7 +16,7 @@ use azalea_protocol::{
|
|||
},
|
||||
ServerboundStatusPacket,
|
||||
},
|
||||
ConnectionProtocol, PROTOCOL_VERSION,
|
||||
ClientIntention, PROTOCOL_VERSION,
|
||||
},
|
||||
read::ReadPacketError,
|
||||
};
|
||||
|
@ -95,7 +95,7 @@ async fn handle_connection(stream: TcpStream) -> anyhow::Result<()> {
|
|||
match intent.intention {
|
||||
// If the client is pinging the proxy,
|
||||
// reply with the information below.
|
||||
ConnectionProtocol::Status => {
|
||||
ClientIntention::Status => {
|
||||
let mut conn = conn.status();
|
||||
loop {
|
||||
match conn.read().await {
|
||||
|
@ -135,7 +135,7 @@ async fn handle_connection(stream: TcpStream) -> anyhow::Result<()> {
|
|||
// wait for them to send the `Hello` packet to
|
||||
// log their username and uuid, then forward the
|
||||
// connection along to the proxy target.
|
||||
ConnectionProtocol::Login => {
|
||||
ClientIntention::Login => {
|
||||
let mut conn = conn.login();
|
||||
loop {
|
||||
match conn.read().await {
|
||||
|
@ -169,8 +169,8 @@ async fn handle_connection(stream: TcpStream) -> anyhow::Result<()> {
|
|||
}
|
||||
}
|
||||
}
|
||||
_ => {
|
||||
warn!("Client provided weird intent: {:?}", intent.intention);
|
||||
ClientIntention::Transfer => {
|
||||
warn!("Client attempted to join via transfer")
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -61,7 +61,7 @@ pub struct WriteConnection<W: ProtocolPacket> {
|
|||
/// resolver,
|
||||
/// connect::Connection,
|
||||
/// packets::{
|
||||
/// ConnectionProtocol, PROTOCOL_VERSION,
|
||||
/// ClientIntention, PROTOCOL_VERSION,
|
||||
/// login::{
|
||||
/// ClientboundLoginPacket,
|
||||
/// serverbound_hello_packet::ServerboundHelloPacket,
|
||||
|
@ -82,7 +82,7 @@ pub struct WriteConnection<W: ProtocolPacket> {
|
|||
/// protocol_version: PROTOCOL_VERSION,
|
||||
/// hostname: resolved_address.ip().to_string(),
|
||||
/// port: resolved_address.port(),
|
||||
/// intention: ConnectionProtocol::Login,
|
||||
/// intention: ClientIntention::Login,
|
||||
/// }
|
||||
/// .get(),
|
||||
/// )
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
use crate::packets::ConnectionProtocol;
|
||||
use crate::packets::ClientIntention;
|
||||
use azalea_buf::McBuf;
|
||||
use azalea_protocol_macros::ServerboundHandshakePacket;
|
||||
use std::hash::Hash;
|
||||
|
@ -9,5 +9,5 @@ pub struct ClientIntentionPacket {
|
|||
pub protocol_version: i32,
|
||||
pub hostname: String,
|
||||
pub port: u16,
|
||||
pub intention: ConnectionProtocol,
|
||||
pub intention: ClientIntention,
|
||||
}
|
||||
|
|
|
@ -50,15 +50,44 @@ where
|
|||
fn write(&self, buf: &mut impl Write) -> Result<(), std::io::Error>;
|
||||
}
|
||||
|
||||
impl azalea_buf::McBufReadable for ConnectionProtocol {
|
||||
fn read_from(buf: &mut Cursor<&[u8]>) -> Result<Self, BufReadError> {
|
||||
let id = i32::var_read_from(buf)?;
|
||||
ConnectionProtocol::from_i32(id).ok_or(BufReadError::UnexpectedEnumVariant { id })
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub enum ClientIntention {
|
||||
Status = 1,
|
||||
Login = 2,
|
||||
Transfer = 3
|
||||
}
|
||||
|
||||
impl TryFrom<i32> for ClientIntention {
|
||||
type Error = ();
|
||||
|
||||
fn try_from(value: i32) -> Result<Self, Self::Error> {
|
||||
match value {
|
||||
1 => Ok(ClientIntention::Status),
|
||||
2 => Ok(ClientIntention::Login),
|
||||
3 => Ok(ClientIntention::Transfer),
|
||||
_ => Err(()),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl McBufWritable for ConnectionProtocol {
|
||||
impl From<ClientIntention> for ConnectionProtocol {
|
||||
fn from(intention: ClientIntention) -> Self {
|
||||
match intention {
|
||||
ClientIntention::Status => ConnectionProtocol::Status,
|
||||
ClientIntention::Login | ClientIntention::Transfer => ConnectionProtocol::Login,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl azalea_buf::McBufReadable for ClientIntention {
|
||||
fn read_from(buf: &mut Cursor<&[u8]>) -> Result<Self, BufReadError> {
|
||||
let id = i32::var_read_from(buf)?;
|
||||
id.try_into().map_err(|_| BufReadError::UnexpectedEnumVariant { id })
|
||||
}
|
||||
}
|
||||
|
||||
impl McBufWritable for ClientIntention {
|
||||
fn write_into(&self, buf: &mut impl Write) -> Result<(), std::io::Error> {
|
||||
(*self as i32).var_write_into(buf)
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Add table
Reference in a new issue