#include #include #include using DataBufferStream = sp::io::Stream; class CustomPacketHandler : public sp::PacketHandler { void Handle(const KeepAlivePacket& packet) { std::cout << "KeepAlive handled ! " << packet.GetKeepAliveId() << "\n"; } void Handle(const DisconnectPacket& packet) { std::cout << "Disconnect handled ! " << packet.GetReason() << "\n"; } void Handle(const UpgradeTowerPacket& packet) { std::cout << "UpgradeTower handled !\n"; } }; int main() { auto handler = std::make_shared(); DataBufferStream stream; stream.GetDispatcher().RegisterHandler(PacketId::Disconnect, handler); // this should not be dispatched stream.SendMessage(KeepAlivePacket{96}); stream.RecieveMessages(); stream.GetDispatcher().RegisterHandler(PacketId::KeepAlive, handler); stream.SendMessage(KeepAlivePacket{69}); stream.RecieveMessages(); stream.SendMessage(DisconnectPacket{"A valid reason"}); stream.RecieveMessages(); return 0; }