87 lines
2.4 KiB
C++
87 lines
2.4 KiB
C++
#ifndef NETWORK_DEPENDENCIES_MESSAGE_HEADER_H
|
|
#define NETWORK_DEPENDENCIES_MESSAGE_HEADER_H
|
|
|
|
/////////////////////////////////////
|
|
// Created by Pontus Fransson 2013 //
|
|
/////////////////////////////////////
|
|
|
|
#include <string>
|
|
#include "../Protocols.h"
|
|
|
|
namespace Oyster
|
|
{
|
|
namespace Network
|
|
{
|
|
namespace Messages
|
|
{
|
|
class MessageHeader
|
|
{
|
|
public:
|
|
MessageHeader();
|
|
virtual ~MessageHeader();
|
|
|
|
virtual void Pack(Protocols::ProtocolHeader& header, unsigned char msg[] );
|
|
virtual void Unpack(unsigned char msg[], Protocols::ProtocolHeader& header);
|
|
|
|
protected:
|
|
//Pack variables to messages
|
|
void PackBool(bool i, unsigned char msg[]);
|
|
|
|
void PackChar(char i, unsigned char msg[]);
|
|
void PackUnsignedChar(unsigned char i, unsigned char msg[]);
|
|
|
|
void PackShort(short i, unsigned char msg[]);
|
|
void PackUnsignedShort(unsigned short i, unsigned char msg[]);
|
|
|
|
void PackInt(int i, unsigned char msg[]);
|
|
void PackUnsignedInt(unsigned int i, unsigned char msg[]);
|
|
|
|
void PackInt64(__int64 i, unsigned char msg[]);
|
|
void PackUnsignedInt64(unsigned __int64 i, unsigned char msg[]);
|
|
|
|
void PackFloat(float i, unsigned char msg[]);
|
|
void PackFloat(float i[], unsigned int elementCount, unsigned char msg[]);
|
|
void PackDouble(double i, unsigned char msg[]);
|
|
|
|
void PackStr(char str[], unsigned char msg[]);
|
|
void PackStr(std::string str, unsigned char msg[]);
|
|
|
|
//TODO: Add Pack functions for Vec2, 3, 4 and maybe Matrix. Etc.
|
|
|
|
|
|
//Unpack variables from message
|
|
bool UnpackBool(unsigned char msg[]);
|
|
|
|
char UnpackChar(unsigned char msg[]);
|
|
unsigned char UnpackUnsignedChar(unsigned char msg[]);
|
|
|
|
short UnpackShort(unsigned char msg[]);
|
|
unsigned short UnpackUnsignedShort(unsigned char msg[]);
|
|
|
|
int UnpackInt(unsigned char msg[]);
|
|
unsigned int UnpackUnsignedInt(unsigned char msg[]);
|
|
|
|
__int64 UnpackInt64(unsigned char msg[]);
|
|
unsigned __int64 UnpackUnsignedInt64(unsigned char msg[]);
|
|
|
|
float UnpackFloat(unsigned char msg[]);
|
|
float* UnpackFloat(unsigned int& elementCount, unsigned char msg[]);
|
|
double UnpackDouble(unsigned char msg[]);
|
|
|
|
std::string UnpackStr(unsigned char msg[]);
|
|
|
|
//TODO: Add Unpack functions for Vec2, 3, 4 and maybe Matrix. Etc.
|
|
|
|
|
|
//Sets the this->size to first position in msg
|
|
void SetSize(unsigned char msg[]);
|
|
|
|
private:
|
|
int size;
|
|
|
|
};
|
|
}
|
|
}
|
|
}
|
|
|
|
#endif |