ioneye/protocol/src/lib.rs
2023-04-09 12:58:44 -04:00

51 lines
No EOL
984 B
Rust

use serde::{Deserialize, Serialize};
pub const PROTOCOL_VERSION: u32 = 1;
#[derive(Serialize, Deserialize, Debug, Clone)]
pub enum State {
Handshake,
Play
}
#[derive(Serialize, Deserialize, Debug, Clone)]
pub enum MessageC2S {
Hello {
version: u32,
requested_username: String,
next_state: State
},
Goodbye {
reason: GoodbyeReason
}
}
#[derive(Serialize, Deserialize, Debug, Clone)]
pub enum MessageS2C {
Hello {
version: u32,
given_username: String,
next_state: State
},
Goodbye {
reason: GoodbyeReason
}
}
#[derive(Serialize, Deserialize, Debug, Clone)]
pub enum GoodbyeReason {
UnsupportedProtocol { supported: u32, got: u32 },
UnexpectedPacket,
UnexpectedNextState,
UsernameTaken,
Done
}
pub fn pc2s(pkt: &MessageC2S) -> Vec<u8> {
rmp_serde::to_vec(pkt).unwrap()
}
pub fn ps2c(pkt: &MessageS2C) -> Vec<u8> {
rmp_serde::to_vec(pkt).unwrap()
}