#include "TableSerializer.h" #include "LightweightDatabaseCommon.h" #include "BitStream.h" #include "StringCompressor.h" void DatabaseFilter::Serialize(RakNet::BitStream *out) { stringCompressor->EncodeString(columnName, _TABLE_MAX_COLUMN_NAME_LENGTH, out); out->Write((unsigned char)columnType); out->Write((unsigned char)operation); if (operation!=DataStructures::Table::QF_IS_EMPTY && operation!=DataStructures::Table::QF_NOT_EMPTY) { assert(cellValue.isEmpty==false); TableSerializer::SerializeCell(out, &cellValue, columnType); } } bool DatabaseFilter::Deserialize(RakNet::BitStream *in) { unsigned char temp; stringCompressor->DecodeString(columnName, _TABLE_MAX_COLUMN_NAME_LENGTH, in); in->Read(temp); columnType=(DataStructures::Table::ColumnType)temp; if (in->Read(temp)==false) return false; operation=(DataStructures::Table::FilterQueryType)temp; if (operation!=DataStructures::Table::QF_IS_EMPTY && operation!=DataStructures::Table::QF_NOT_EMPTY) { return TableSerializer::DeserializeCell(in, &cellValue, columnType); } return true; } void DatabaseCellUpdate::Serialize(RakNet::BitStream *out) { stringCompressor->EncodeString(columnName, _TABLE_MAX_COLUMN_NAME_LENGTH, out); out->Write((unsigned char)columnType); TableSerializer::SerializeCell(out, &cellValue, columnType); } bool DatabaseCellUpdate::Deserialize(RakNet::BitStream *in) { unsigned char temp; stringCompressor->DecodeString(columnName, _TABLE_MAX_COLUMN_NAME_LENGTH, in); in->Read(temp); columnType=(DataStructures::Table::ColumnType)temp; return TableSerializer::DeserializeCell(in, &cellValue, columnType); }