This commit is contained in:
Jocke
2015-12-15 14:55:56 +01:00
parent bac0a1de26
commit e940c1d604
6 changed files with 85 additions and 51 deletions
+4 -4
View File
@@ -36,12 +36,12 @@ private:
void Disconnect();
void Ping();
void MoveMessageHead(char*& data, size_t& length, size_t stepSize);
void ParseMessageType(char* data, size_t length);
void ParseEventMessage(char* data, size_t length);
void ParseConnect(char* data, size_t length);
void ParseMessageType(Package& package);
void ParseEventMessage(Package& package);
void ParseConnect(Package& package);
void ParsePing();
void ParseServerPing();
void ParseSnapshot(char* data, size_t length);
void ParseSnapshot(Package& package);
void CreateNewPlayer(int i);
void IdentifyPacketLoss();
+19
View File
@@ -3,6 +3,7 @@
#include <string>
#include "Network/MessageType.h"
#include "Core/Util/Logging.h"
// Defines the
class Package
@@ -11,6 +12,8 @@ public:
// arg1: Type of message (Connect, Disconnect...)
// arg2: PackageID for identifying packet loss.
Package(MessageType type, unsigned int& packageID);
// Used to create package from already existing data buffer.
Package(char* data, int sizeOfPackage);
~Package();
// Add primitive types like int, float, char...
template<typename T>
@@ -19,13 +22,29 @@ public:
memcpy(m_Data + m_Offset, &val, sizeof(T));
m_Offset += sizeof(T);
}
// Pops the first element as if it was a primitive.
template<typename T>
T PopFrontPrimitive()
{
if (m_Offset < m_ReturnDataOffset + sizeof(T)) {
LOG_WARNING("Package PopFrontPrimitive(): You are trying to remove more than what exists in this package!");
return -1;
}
T returnValue;
memcpy(&returnValue, m_Data + m_ReturnDataOffset, sizeof(T));
m_ReturnDataOffset += sizeof(T);
return returnValue;
}
void AddString(std::string str);
// Pops the first element as if it was a string.
std::string PopFrontString();
int Size() { return m_Offset; };
char* Data() { return m_Data; };
private:
char* m_Data = new char[128];
unsigned int m_ReturnDataOffset = 0;
int m_Offset = 0;
};
+4 -4
View File
@@ -54,13 +54,13 @@ private:
void SendPing();
void CheckForTimeOuts();
void Disconnect(int i);
void ParseMessageType(char* data, size_t length);
void ParseEvent(char* data, size_t length);
void ParseConnect(char* data, size_t length);
void ParseMessageType(Package& package);
void ParseEvent(Package& package);
void ParseConnect(Package& package);
void ParseDisconnect();
void ParseClientPing();
void ParseServerPing();
void ParseSnapshot(char* data, size_t length);
void ParseSnapshot(Package& package);
void IdentifyPacketLoss();
};