use libpso::{PSOPacket, PacketParseError}; use libpso::crypto::PSOCipher; pub enum OnConnect { Packet(Box<dyn PSOPacket>), Cipher((Box<dyn PSOCipher>, Box<dyn PSOCipher>)), } pub trait ServerPacket: Sized { fn from_bytes(data: &Vec<u8>) -> Result<Self, PacketParseError>; } pub trait ServerState { type Packet: ServerPacket; type PacketError; //fn handle(&mut self, pkt: &Self::Packet) -> Result<Vec<Box<dyn PSOPacket>>, Self::PacketError>; fn on_connect(&mut self) -> Vec<OnConnect>; //fn handle(&mut self, pkt: &Self::Packet) -> Result<Box<dyn Iterator<Item = Box<dyn PSOPacket>>>, Self::PacketError>; fn handle(&mut self, pkt: &Self::Packet) -> Box<dyn Iterator<Item = Box<dyn PSOPacket>>>; }