Pumpkin/pumpkin/src/client/client_packet.rs
2024-07-29 09:21:12 +02:00

42 lines
1.1 KiB
Rust

use crate::protocol::{
client::status::{CPingResponse, CStatusResponse},
server::{
handshake::SHandShake,
status::{SPingRequest, SStatusRequest},
},
};
use super::Client;
pub trait ClientPacketProcessor {
// Handshake
fn handle_handshake(&mut self, handshake: SHandShake);
// Status
fn handle_status_request(&mut self, status_request: SStatusRequest);
fn handle_ping_request(&mut self, ping_request: SPingRequest);
}
impl ClientPacketProcessor for Client {
fn handle_handshake(&mut self, handshake: SHandShake) {
// TODO set protocol version and check protocol version
self.connection_state = handshake.next_state;
dbg!("handshake");
}
fn handle_status_request(&mut self, _status_request: SStatusRequest) {
dbg!("sending status");
self.send_packet(CStatusResponse::new(
serde_json::to_string(&self.server.status_response).unwrap(),
))
}
fn handle_ping_request(&mut self, ping_request: SPingRequest) {
dbg!("ping");
self.send_packet(CPingResponse::new(ping_request.payload));
self.close();
}
}