rust_openttd_admin/packet/admin/
mod.rs1pub mod client_packets;
8pub mod server_packets;
9
10#[cfg(test)]
11mod test;
12
13pub use crate::packet::serde::{PacketRead, PacketWrite, Result};
14
15pub trait AdminRead {
17 fn read_packet(&mut self) -> Result<server_packets::Packet>;
18}
19
20impl<T: PacketRead> AdminRead for T {
21 fn read_packet(&mut self) -> Result<server_packets::Packet> {
22 let (packet_type, buffer) = PacketRead::read_packet(self)?;
23 use crate::packet::serde::from_bytes;
24 use server_packets::Packet::*;
25 Ok(match packet_type {
26 100 => Full,
27 101 => Banned,
28 102 => Error(from_bytes(&buffer)?),
29 103 => Protocol(from_bytes(&buffer)?),
30 104 => Welcome(from_bytes(&buffer)?),
31 105 => Newgame,
32 106 => Shutdown,
33 107 => Date(from_bytes(&buffer)?),
34 108 => ClientJoin(from_bytes(&buffer)?),
35 109 => ClientInfo(from_bytes(&buffer)?),
36 110 => ClientUpdate(from_bytes(&buffer)?),
37 111 => ClientQuit(from_bytes(&buffer)?),
38 112 => ClientError(from_bytes(&buffer)?),
39 113 => CompanyNew(from_bytes(&buffer)?),
40 114 => CompanyInfo(from_bytes(&buffer)?),
41 115 => CompanyUpdate(from_bytes(&buffer)?),
42 116 => CompanyRemove(from_bytes(&buffer)?),
43 117 => CompanyEconomy(from_bytes(&buffer)?),
44 118 => CompanyStats(from_bytes(&buffer)?),
45 119 => Chat(from_bytes(&buffer)?),
46 120 => Rcon(from_bytes(&buffer)?),
47 121 => Console(from_bytes(&buffer)?),
48 122 => CmdNames(from_bytes(&buffer)?),
49 123 => CmdLogging(from_bytes(&buffer)?),
50 124 => Gamescript(from_bytes(&buffer)?),
51 125 => RconEnd(from_bytes(&buffer)?),
52 126 => Pong(from_bytes(&buffer)?),
53 _ => UnknownPacket {
54 packet_type,
55 buffer,
56 },
57 })
58 }
59}
60
61pub trait AdminWrite<T: client_packets::Packet> {
64 fn write_packet(&mut self, value: &T) -> Result<()>;
65}
66
67impl<T: client_packets::Packet, W: PacketWrite<T>> AdminWrite<T> for W {
68 fn write_packet(&mut self, value: &T) -> Result<()> {
69 self.write_packet(value)
70 }
71}