#include #include #include class KeepAliveHandler : public sp::PacketHandler { void Handle(const KeepAlivePacket& packet) { std::cout << "KeepAlive handled !\n"; } void Handle(const DisconnectPacket& packet) { std::cout << "Disconnect handled !\n"; } void Handle(const UpgradeTowerPacket& packet) { std::cout << "UpgradeTower handled !\n"; } }; int main() { auto upgradeTower = std::make_unique(std::make_tuple(666, 9)); sp::PacketMessage* msg = upgradeTower.get(); KeepAliveHandler handler; msg->Dispatch(handler); sp::DataBuffer buffer; msg->Write(buffer); std::uint8_t msgId; buffer >> msgId; auto upgradeTower2 = std::make_unique(); upgradeTower2->Read(buffer); std::cout << "Test : " << (unsigned) upgradeTower2->GetTowerId() << "\n"; sp::PacketFactory factory; auto packet = factory.CreateMessage(msgId); if (packet == nullptr) { std::cout << "Bad ID !\n"; return 1; } std::cout << (unsigned)packet->GetId() << std::endl; packet->Dispatch(handler); return 0; }