I've adjusted the naming conventions for the serial code (read more)

It looks like this whole branch is fucking useless, considering that I'll
need to reimplement that massive switch statement again just to determine
which overwritten method to use. I might as well not have bothered.
This commit is contained in:
Kayne Ruse
2014-08-31 02:58:47 +10:00
parent 1c1b1e0a1f
commit 7d4d7817f2
8 changed files with 120 additions and 91 deletions
@@ -24,49 +24,49 @@
#include "serial_utility.hpp"
void CharacterPacket::Serialize(void* buffer) {
serialize(&buffer, &type, sizeof(SerialPacketType));
serializeCopy(&buffer, &type, sizeof(SerialPacketType));
//identify the character
serialize(&buffer, &characterIndex, sizeof(int));
serialize(&buffer, handle, PACKET_STRING_SIZE);
serialize(&buffer, avatar, PACKET_STRING_SIZE);
serializeCopy(&buffer, &characterIndex, sizeof(int));
serializeCopy(&buffer, handle, PACKET_STRING_SIZE);
serializeCopy(&buffer, avatar, PACKET_STRING_SIZE);
//the owner
serialize(&buffer, &accountIndex, sizeof(int));
serializeCopy(&buffer, &accountIndex, sizeof(int));
//location
serialize(&buffer, &roomIndex, sizeof(int));
serialize(&buffer, &origin.x, sizeof(double));
serialize(&buffer, &origin.y, sizeof(double));
serialize(&buffer, &motion.x, sizeof(double));
serialize(&buffer, &motion.y, sizeof(double));
serializeCopy(&buffer, &roomIndex, sizeof(int));
serializeCopy(&buffer, &origin.x, sizeof(double));
serializeCopy(&buffer, &origin.y, sizeof(double));
serializeCopy(&buffer, &motion.x, sizeof(double));
serializeCopy(&buffer, &motion.y, sizeof(double));
//stats structure
serializeStatistics(&buffer, &stats);
serializeCopyStatistics(&buffer, &stats);
//TODO: gameplay components: equipment, items, buffs, debuffs
}
void CharacterPacket::Deserialize(void* buffer) {
deserialize(&buffer, &type, sizeof(SerialPacketType));
deserializeCopy(&buffer, &type, sizeof(SerialPacketType));
//identify the character
deserialize(&buffer, &characterIndex, sizeof(int));
deserialize(&buffer, handle, PACKET_STRING_SIZE);
deserialize(&buffer, avatar, PACKET_STRING_SIZE);
deserializeCopy(&buffer, &characterIndex, sizeof(int));
deserializeCopy(&buffer, handle, PACKET_STRING_SIZE);
deserializeCopy(&buffer, avatar, PACKET_STRING_SIZE);
//the owner
deserialize(&buffer, &accountIndex, sizeof(int));
deserializeCopy(&buffer, &accountIndex, sizeof(int));
//location
deserialize(&buffer, &roomIndex, sizeof(int));
deserialize(&buffer, &origin.x, sizeof(double));
deserialize(&buffer, &origin.y, sizeof(double));
deserialize(&buffer, &motion.x, sizeof(double));
deserialize(&buffer, &motion.y, sizeof(double));
deserializeCopy(&buffer, &roomIndex, sizeof(int));
deserializeCopy(&buffer, &origin.x, sizeof(double));
deserializeCopy(&buffer, &origin.y, sizeof(double));
deserializeCopy(&buffer, &motion.x, sizeof(double));
deserializeCopy(&buffer, &motion.y, sizeof(double));
//stats structure
deserializeStatistics(&buffer, &stats);
deserializeCopyStatistics(&buffer, &stats);
//TODO: gameplay components: equipment, items, buffs, debuffs
}
@@ -24,17 +24,17 @@
#include "serial_utility.hpp"
void ClientPacket::Serialize(void* buffer) {
serialize(&buffer, &type, sizeof(SerialPacketType));
serializeCopy(&buffer, &type, sizeof(SerialPacketType));
serialize(&buffer, &clientIndex, sizeof(int));
serialize(&buffer, &accountIndex, sizeof(int));
serialize(&buffer, username, PACKET_STRING_SIZE);
serializeCopy(&buffer, &clientIndex, sizeof(int));
serializeCopy(&buffer, &accountIndex, sizeof(int));
serializeCopy(&buffer, username, PACKET_STRING_SIZE);
}
void ClientPacket::Deserialize(void* buffer) {
deserialize(&buffer, &type, sizeof(SerialPacketType));
deserializeCopy(&buffer, &type, sizeof(SerialPacketType));
deserialize(&buffer, &clientIndex, sizeof(int));
deserialize(&buffer, &accountIndex, sizeof(int));
deserialize(&buffer, username, PACKET_STRING_SIZE);
deserializeCopy(&buffer, &clientIndex, sizeof(int));
deserializeCopy(&buffer, &accountIndex, sizeof(int));
deserializeCopy(&buffer, username, PACKET_STRING_SIZE);
}
+10 -10
View File
@@ -24,12 +24,12 @@
#include "serial_utility.hpp"
void RegionPacket::Serialize(void* buffer) {
serialize(&buffer, &type, sizeof(SerialPacketType));
serializeCopy(&buffer, &type, sizeof(SerialPacketType));
//format
serialize(&buffer, &roomIndex, sizeof(int));
serialize(&buffer, &x, sizeof(int));
serialize(&buffer, &y, sizeof(int));
serializeCopy(&buffer, &roomIndex, sizeof(int));
serializeCopy(&buffer, &x, sizeof(int));
serializeCopy(&buffer, &y, sizeof(int));
if (type != SerialPacketType::REGION_CONTENT) {
return;
@@ -46,16 +46,16 @@ void RegionPacket::Serialize(void* buffer) {
}
//solids
serialize(&buffer, region->GetSolidBitset(), REGION_SOLID_FOOTPRINT);
serializeCopy(&buffer, region->GetSolidBitset(), REGION_SOLID_FOOTPRINT);
}
void RegionPacket::Deserialize(void* buffer) {
deserialize(&buffer, &type, sizeof(SerialPacketType));
deserializeCopy(&buffer, &type, sizeof(SerialPacketType));
//format
deserialize(&buffer, &roomIndex, sizeof(int));
deserialize(&buffer, &x, sizeof(int));
deserialize(&buffer, &y, sizeof(int));
deserializeCopy(&buffer, &roomIndex, sizeof(int));
deserializeCopy(&buffer, &x, sizeof(int));
deserializeCopy(&buffer, &y, sizeof(int));
if (type != SerialPacketType::REGION_CONTENT) {
return;
@@ -75,5 +75,5 @@ void RegionPacket::Deserialize(void* buffer) {
}
//solids
deserialize(&buffer, region->GetSolidBitset(), REGION_SOLID_FOOTPRINT);
deserializeCopy(&buffer, region->GetSolidBitset(), REGION_SOLID_FOOTPRINT);
}
@@ -21,3 +21,4 @@
*/
#include "serial_packet_base.hpp"
//NOTE: This is a sanity check
@@ -24,19 +24,19 @@
#include "serial_utility.hpp"
void ServerPacket::Serialize(void* buffer) {
serialize(&buffer, &type, sizeof(SerialPacketType));
serializeCopy(&buffer, &type, sizeof(SerialPacketType));
//identify the server
serialize(&buffer, name, PACKET_STRING_SIZE);
serialize(&buffer, &playerCount, sizeof(int));
serialize(&buffer, &version, sizeof(int));
serializeCopy(&buffer, name, PACKET_STRING_SIZE);
serializeCopy(&buffer, &playerCount, sizeof(int));
serializeCopy(&buffer, &version, sizeof(int));
}
void ServerPacket::Deserialize(void* buffer) {
deserialize(&buffer, &type, sizeof(SerialPacketType));
deserializeCopy(&buffer, &type, sizeof(SerialPacketType));
//identify the server
deserialize(&buffer, name, PACKET_STRING_SIZE);
deserialize(&buffer, &playerCount, sizeof(int));
deserialize(&buffer, &version, sizeof(int));
deserializeCopy(&buffer, name, PACKET_STRING_SIZE);
deserializeCopy(&buffer, &playerCount, sizeof(int));
deserializeCopy(&buffer, &version, sizeof(int));
}
+50 -32
View File
@@ -21,54 +21,72 @@
*/
#include "serial_utility.hpp"
#include "serial_packet_type.hpp"
#include <cstring>
void serialize(void** bufferHead, void* data, int size) {
void serializePacket(SerialPacketBase* packet, void* data) {
switch(packet->GetType()) {
//define all packet types
}
}
void deserializePacket(SerialPacketBase* packet, void* data) {
//get the type
SerialPacketType type;
memcpy(&type, data, sizeof(SerialPacketType));
switch(type) {
//define all extra types
}
}
void serializeCopy(void** bufferHead, void* data, int size) {
memcpy(*bufferHead, data, size);
(*bufferHead) = static_cast<void*>(static_cast<char*>(*bufferHead) + size);
}
void deserialize(void** bufferHead, void* data, int size) {
void deserializeCopy(void** bufferHead, void* data, int size) {
memcpy(data, *bufferHead, size);
(*bufferHead) = static_cast<void*>(static_cast<char*>(*bufferHead) + size);
}
void serializeStatistics(void** bufferHead, Statistics* stats) {
void serializeCopyStatistics(void** bufferHead, Statistics* stats) {
//integers
serialize(bufferHead, &stats->level, sizeof(int));
serialize(bufferHead, &stats->exp, sizeof(int));
serialize(bufferHead, &stats->maxHP, sizeof(int));
serialize(bufferHead, &stats->health, sizeof(int));
serialize(bufferHead, &stats->maxMP, sizeof(int));
serialize(bufferHead, &stats->mana, sizeof(int));
serialize(bufferHead, &stats->attack, sizeof(int));
serialize(bufferHead, &stats->defence, sizeof(int));
serialize(bufferHead, &stats->intelligence, sizeof(int));
serialize(bufferHead, &stats->resistance, sizeof(int));
serialize(bufferHead, &stats->speed, sizeof(int));
serializeCopy(bufferHead, &stats->level, sizeof(int));
serializeCopy(bufferHead, &stats->exp, sizeof(int));
serializeCopy(bufferHead, &stats->maxHP, sizeof(int));
serializeCopy(bufferHead, &stats->health, sizeof(int));
serializeCopy(bufferHead, &stats->maxMP, sizeof(int));
serializeCopy(bufferHead, &stats->mana, sizeof(int));
serializeCopy(bufferHead, &stats->attack, sizeof(int));
serializeCopy(bufferHead, &stats->defence, sizeof(int));
serializeCopy(bufferHead, &stats->intelligence, sizeof(int));
serializeCopy(bufferHead, &stats->resistance, sizeof(int));
serializeCopy(bufferHead, &stats->speed, sizeof(int));
//floats
serialize(bufferHead, &stats->accuracy, sizeof(float));
serialize(bufferHead, &stats->evasion, sizeof(float));
serialize(bufferHead, &stats->luck, sizeof(float));
serializeCopy(bufferHead, &stats->accuracy, sizeof(float));
serializeCopy(bufferHead, &stats->evasion, sizeof(float));
serializeCopy(bufferHead, &stats->luck, sizeof(float));
}
void deserializeStatistics(void** bufferHead, Statistics* stats) {
void deserializeCopyStatistics(void** bufferHead, Statistics* stats) {
//integers
deserialize(bufferHead, &stats->level, sizeof(int));
deserialize(bufferHead, &stats->exp, sizeof(int));
deserialize(bufferHead, &stats->maxHP, sizeof(int));
deserialize(bufferHead, &stats->health, sizeof(int));
deserialize(bufferHead, &stats->maxMP, sizeof(int));
deserialize(bufferHead, &stats->mana, sizeof(int));
deserialize(bufferHead, &stats->attack, sizeof(int));
deserialize(bufferHead, &stats->defence, sizeof(int));
deserialize(bufferHead, &stats->intelligence, sizeof(int));
deserialize(bufferHead, &stats->resistance, sizeof(int));
deserialize(bufferHead, &stats->speed, sizeof(int));
deserializeCopy(bufferHead, &stats->level, sizeof(int));
deserializeCopy(bufferHead, &stats->exp, sizeof(int));
deserializeCopy(bufferHead, &stats->maxHP, sizeof(int));
deserializeCopy(bufferHead, &stats->health, sizeof(int));
deserializeCopy(bufferHead, &stats->maxMP, sizeof(int));
deserializeCopy(bufferHead, &stats->mana, sizeof(int));
deserializeCopy(bufferHead, &stats->attack, sizeof(int));
deserializeCopy(bufferHead, &stats->defence, sizeof(int));
deserializeCopy(bufferHead, &stats->intelligence, sizeof(int));
deserializeCopy(bufferHead, &stats->resistance, sizeof(int));
deserializeCopy(bufferHead, &stats->speed, sizeof(int));
//floats
deserialize(bufferHead, &stats->accuracy, sizeof(float));
deserialize(bufferHead, &stats->evasion, sizeof(float));
deserialize(bufferHead, &stats->luck, sizeof(float));
deserializeCopy(bufferHead, &stats->accuracy, sizeof(float));
deserializeCopy(bufferHead, &stats->evasion, sizeof(float));
deserializeCopy(bufferHead, &stats->luck, sizeof(float));
}
+15 -7
View File
@@ -19,16 +19,24 @@
* 3. This notice may not be removed or altered from any source
* distribution.
*/
#ifndef SERIALIZEUTIL_HPP_
#define SERIALIZEUTIL_HPP_
#ifndef SERIALIZEUTILITY_HPP_
#define SERIALIZEUTILITY_HPP_
#include "serial_packet_base.hpp"
#include "statistics.hpp"
//raw memcpy
void serialize(void** bufferHead, void* data, int size);
void deserialize(void** bufferHead, void* data, int size);
//NOTE: The naming conventions here are fucking terrible
void serializeStatistics(void** bufferHead, Statistics* stats);
void deserializeStatistics(void** bufferHead, Statistics* stats);
//BUGFIX: There's really no way to escape this :(
void serializePacket(SerialPacketBase* packet, void* data);
void deserializePacket(SerialPacketBase* packet, void* data);
//raw memcpy
void serializeCopy(void** bufferHead, void* data, int size);
void deserializeCopy(void** bufferHead, void* data, int size);
void serializeCopyStatistics(void** bufferHead, Statistics* stats);
void deserializeCopyStatistics(void** bufferHead, Statistics* stats);
#endif
+6 -4
View File
@@ -21,6 +21,8 @@
*/
#include "udp_network_utility.hpp"
#include "serial_utility.hpp"
#include <stdexcept>
//BUGFIX: memset() is used before sending a packet to remove old data; you don't want to send sensitive data over the network
@@ -164,7 +166,7 @@ int UDPNetworkUtility::SendTo(const char* ip, int port, SerialPacket* serialPack
int UDPNetworkUtility::SendTo(IPaddress* add, SerialPacket* serialPacket) {
memset(packet->data, 0, packet->maxlen);
serialPacket->Serialize(packet->data);
serializePacket(serialPacket, packet->data);
packet->len = PACKET_BUFFER_SIZE;
packet->address = *add;
@@ -179,7 +181,7 @@ int UDPNetworkUtility::SendTo(IPaddress* add, SerialPacket* serialPacket) {
int UDPNetworkUtility::SendTo(int channel, SerialPacket* serialPacket) {
memset(packet->data, 0, packet->maxlen);
serialPacket->Serialize(packet->data);
serializePacket(serialPacket, packet->data);
packet->len = PACKET_BUFFER_SIZE;
int ret = SDLNet_UDP_Send(socket, channel, packet);
@@ -193,7 +195,7 @@ int UDPNetworkUtility::SendTo(int channel, SerialPacket* serialPacket) {
int UDPNetworkUtility::SendToAllChannels(SerialPacket* serialPacket) {
memset(packet->data, 0, packet->maxlen);
serialPacket->Serialize(packet->data);
serializePacket(serialPacket, packet->data);
packet->len = PACKET_BUFFER_SIZE;
int sent = 0;
@@ -213,7 +215,7 @@ int UDPNetworkUtility::Receive(SerialPacket* serialPacket) {
int ret = SDLNet_UDP_Recv(socket, packet);
if (ret > 0) {
//BUG: This simply fails
serialPacket->Deserialize(packet->data);
deserializePacket(serialPacket, packet->data);
serialPacket->srcAddress = packet->address;
}