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