1
0
cuberite-2a/source/packets/cPacket.h
madmaxoft@gmail.com 92981dcb3c Slight cleanup
git-svn-id: http://mc-server.googlecode.com/svn/trunk@238 0a769ca7-a7f5-676a-18bf-c427514a06d6
2012-02-07 07:44:42 +00:00

62 lines
2.3 KiB
C++

#pragma once
#include "../cSocket.h"
#include "../PacketID.h"
class cPacket
{
public:
cPacket()
: m_PacketID( 0 )
{}
virtual ~cPacket() {}
virtual bool Parse( cSocket & a_Socket) {a_Socket.CloseSocket(); LOGERROR("Undefined NEW Parse function %x\n", m_PacketID ); return false; }
virtual bool Send( cSocket & a_Socket) {a_Socket.CloseSocket(); LOGERROR("Undefined NEW Send function %x\n", m_PacketID ); return false; }
virtual cPacket* Clone() const = 0;
unsigned char m_PacketID;
cSocket m_Socket; // Current socket being used
protected:
bool ReadString ( std::string & a_OutString );
bool ReadString16( std::string & a_OutString );
bool ReadShort ( short & a_Short );
bool ReadInteger(int & a_OutInteger );
bool ReadInteger(unsigned int & a_OutInteger );
bool ReadFloat ( float & a_OutFloat );
bool ReadDouble ( double & a_OutDouble );
bool ReadByte ( char & a_OutByte );
bool ReadByte ( unsigned char & a_OutByte );
bool ReadLong ( long long & a_OutLong );
bool ReadBool ( bool & a_OutBool );
void AppendString ( std::string & a_String, char* a_Dst, unsigned int & a_Iterator );
void AppendString16 ( std::string & a_String, char* a_Dst, unsigned int & a_Iterator );
void AppendShort ( short a_Short, char* a_Dst, unsigned int & a_Iterator );
void AppendShort ( unsigned short a_Short, char* a_Dst, unsigned int & a_Iterator );
void AppendInteger ( int a_Integer, char* a_Dst, unsigned int & a_Iterator );
void AppendInteger ( unsigned int a_Integer, char* a_Dst, unsigned int & a_Iterator );
void AppendFloat ( float a_Float, char* a_Dst, unsigned int & a_Iterator );
void AppendDouble ( double & a_Double, char* a_Dst, unsigned int & a_Iterator );
void AppendByte ( char a_Byte, char* a_Dst, unsigned int & a_Iterator );
void AppendLong ( long long & a_Long, char* a_Dst, unsigned int & a_Iterator );
void AppendBool ( bool a_Bool, char* a_Dst, unsigned int & a_Iterator );
void AppendData ( char* a_Data, unsigned int a_Size, char* a_Dst, unsigned int & a_Iterator );
public:
static int SendData( cSocket & a_Socket, const char* a_Message, unsigned int a_Size, int a_Options );
static int RecvAll( cSocket & a_Socket, char* a_Data, unsigned int a_Size, int a_Options );
};
typedef std::list <cPacket*> PacketList;
typedef std::deque<cPacket *> PacketQueue;