diff --git a/SQCSim-common/netprotocol.cpp b/SQCSim-common/netprotocol.cpp index 494215b..882f4a3 100644 --- a/SQCSim-common/netprotocol.cpp +++ b/SQCSim-common/netprotocol.cpp @@ -1017,6 +1017,7 @@ void netprot::sendPack(SOCKET sock, Packet* pack, Buffer* buf) return; case PACKET_TYPE::CHUNKMOD: //sendPack(sock, (ChunkMod*)pack->ptr, buf); + return; case PACKET_TYPE::PLAYERMOD: //sendPack(sock, (PlayerMod*)pack->ptr, buf); return; diff --git a/SQCSim-common/netprotocol.h b/SQCSim-common/netprotocol.h index 26b946b..5360c3e 100644 --- a/SQCSim-common/netprotocol.h +++ b/SQCSim-common/netprotocol.h @@ -15,6 +15,8 @@ namespace netprot { GAMEINFO, ENDINFO , CHAT, ERRLOG, LAST_PACK }; + + /* Structures */ struct Buffer { // Pour pouvoir rendre l'utilisation des buffers plus clean. char* ptr = new char[BUFFER_LENGTH] { 1 }; @@ -29,8 +31,12 @@ namespace netprot { PACKET_TYPE type = PACKET_TYPE::ERR; }; + /* Constantes */ + inline const char Footer[sizeof(uint32_t)] = { '\0', '\r', '\0', '\n' }; // constante de footer qui est ajoutée à chaque paquet envoyé. + /* Sous-structures */ + struct Keys { bool forward, backward, @@ -52,6 +58,8 @@ namespace netprot { running; }; + /* Structures de paquets */ + struct Input { // cli -> srv UDP ~frame Timestamp timestamp; uint64_t sid = 0; @@ -125,6 +133,8 @@ namespace netprot { ErrorLog(ErrorLog* err) : is_fatal(err->is_fatal) { strcpy(err->mess, mess); } }; + /* Fonctions */ + void Serialize(Input* in, char* buf[], uint32_t* buflen); // cli void Serialize(Output* out, char* buf[], uint32_t* buflen); // srv void Serialize(Sync* sync, char* buf[], uint32_t* buflen); // srv @@ -153,6 +163,8 @@ namespace netprot { bool emptyPack(Packet pck); Packet makePack(void* ptr, PACKET_TYPE type); // Pour pouvoir faire une liste de stock a supprimer sans avoir a en faire une pour chaque type. + + template T copyPack(Packet* pck); template void sendPack(SOCKET sock, T* pack, char** buf, uint32_t* buflen); template void sendPackTo(SOCKET sock, T* pack, char** buf, uint32_t* buflen, sockaddr_in* sockad); @@ -162,6 +174,11 @@ namespace netprot { std::vector recvPacks(SOCKET sock, Buffer* buf); + /* Templates */ + + template + T copyPack(Packet* pck) { return T((T*)pck->ptr); } + template void sendPack(SOCKET sock, T* pack, char** buf, uint32_t* buflen) { netprot::Serialize(pack, buf, buflen);