use std::io::{Read, Write};
use crate::io::reader::CubeReader;
use crate::io::writer::CubeWriter;
use crate::util::{IoResult, VioResult};
pub const LL_SERVER_DISCONNECT: u8 = 0x61;
pub struct ServerDisconnect {
reason: String,
rejoin: bool,
}
impl ServerDisconnect {
pub fn write<W: Write>(&self, writer: &mut CubeWriter<W>) -> VioResult {
writer.write_uint8(LL_SERVER_DISCONNECT)?;
writer.write_string(self.reason.as_str())?;
writer.write_bit(self.rejoin)?;
Result::Ok(())
}
pub fn read<R: Read>(reader: &mut CubeReader<R>) -> IoResult<Self> {
Result::Ok(Self {
reason: reader.read_string()?,
rejoin: false,
})
}
}
pub const LL_CLIENT_DISCONNECT: u8 = 0x62;
pub struct ClientDisconnect {}
impl ClientDisconnect {
pub fn write<W: Write>(&self, writer: &mut CubeWriter<W>) -> VioResult {
writer.write_uint8(LL_CLIENT_DISCONNECT)?;
Result::Ok(())
}
pub fn read<R: Read>(_reader: &mut CubeReader<R>) -> IoResult<Self> { Result::Ok(Self {}) }
}