Implemented a macro for the serial buffer size

This commit is contained in:
Kayne Ruse
2014-03-15 23:36:31 +11:00
parent d5b551cec3
commit 9db86c19f6
6 changed files with 56 additions and 25 deletions
+4
View File
@@ -27,6 +27,8 @@
#include "SDL/SDL_net.h"
#include <algorithm>
#define PACKET_STRING_SIZE 100
#pragma pack(push, 0)
@@ -114,4 +116,6 @@ union NetworkPacket {
#pragma pack(pop)
#define PACKET_BUFFER_SIZE std::max(sizeof(NetworkPacket), REGION_WIDTH * REGION_HEIGHT * REGION_DEPTH * sizeof(Region::type_t) + sizeof(NetworkPacket::Metadata))
#endif
+26
View File
@@ -76,6 +76,14 @@ void serializePlayer(NetworkPacket* packet, char* buffer) {
memcpy(buffer, &packet->playerInfo.motion.y, sizeof(double));
}
void serializeRegion(NetworkPacket* packet, char* buffer) {
// cout << "serializeRegion" << endl;
memcpy(buffer, &packet->meta.type, sizeof(NetworkPacket::Type));
buffer += sizeof(NetworkPacket::Type);
//TODO
}
//-------------------------
//internal deserialization functions
//-------------------------
@@ -126,6 +134,14 @@ void deserializePlayer(NetworkPacket* packet, char* buffer) {
memcpy(&packet->playerInfo.motion.y, buffer, sizeof(double));
}
void deserializeRegion(NetworkPacket* packet, char* buffer) {
// cout << "deserializeRegion" << endl;
memcpy(&packet->meta.type, buffer, sizeof(NetworkPacket::Type));
buffer += sizeof(NetworkPacket::Type);
//TODO
}
//-------------------------
//the interface functions
//-------------------------
@@ -160,6 +176,11 @@ void serialize(NetworkPacket* packet, void* buffer) {
case NetworkPacket::Type::PLAYER_UPDATE:
serializePlayer(packet, reinterpret_cast<char*>(buffer));
break;
//map info
case NetworkPacket::Type::REGION_CONTENT:
serializeRegion(packet, reinterpret_cast<char*>(buffer));
break;
}
// for (int i = 0; i < sizeof(NetworkPacket); i++) {
// cout << ((char*)(buffer))[i];
@@ -199,6 +220,11 @@ void deserialize(NetworkPacket* packet, void* buffer) {
case NetworkPacket::Type::PLAYER_UPDATE:
deserializePlayer(packet, reinterpret_cast<char*>(buffer));
break;
//map info
case NetworkPacket::Type::REGION_CONTENT:
serializeRegion(packet, reinterpret_cast<char*>(buffer));
break;
}
// for (int i = 0; i < sizeof(NetworkPacket); i++) {
// cout << ((char*)(buffer))[i];