You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
153 lines
2.4 KiB
C++
153 lines
2.4 KiB
C++
// Packet.cpp: Implementierung der Klasse CPacket.
|
|
//
|
|
//////////////////////////////////////////////////////////////////////
|
|
#include "../forcelibs.h"
|
|
#include <string.h>
|
|
#include "packet.h"
|
|
|
|
//////////////////////////////////////////////////////////////////////
|
|
// Konstruktion/Destruktion
|
|
//////////////////////////////////////////////////////////////////////
|
|
CNetPacket::CNetPacket()
|
|
{
|
|
code_type = 0;
|
|
len = 0;
|
|
buf = 0;
|
|
mem = buf;
|
|
}
|
|
|
|
CNetPacket::CNetPacket(int plen)
|
|
{
|
|
code_type = 0;
|
|
len = 0;
|
|
buf = 0;
|
|
mem = 0;
|
|
|
|
if( plen > 0 )
|
|
{
|
|
len = plen;
|
|
buf = new char [ plen + 1];
|
|
buf[len]='\0';
|
|
}
|
|
mem = buf;
|
|
}
|
|
|
|
CNetPacket::CNetPacket(const char *message)
|
|
{
|
|
code_type = 0;
|
|
len = 0;
|
|
buf = 0;
|
|
|
|
if( message != 0 )
|
|
{
|
|
len = strlen(message);
|
|
buf = new char [ len + 1 ];
|
|
strcpy( buf, message);
|
|
buf[len]='\0';
|
|
}
|
|
mem = buf;
|
|
}
|
|
|
|
CNetPacket::CNetPacket(const char *message, int plen)
|
|
{
|
|
code_type = 0;
|
|
len = 0;
|
|
buf = 0;
|
|
|
|
if( plen > 0 )
|
|
{
|
|
len = plen;
|
|
buf = new char [ plen + 1];
|
|
memcpy( buf, message, len);
|
|
buf[len]='\0';
|
|
}
|
|
mem = buf;
|
|
}
|
|
|
|
CNetPacket::CNetPacket(const char *prefix, const char *message, int plen)
|
|
{
|
|
code_type = 0;
|
|
len = 0;
|
|
buf = 0;
|
|
|
|
int prefix_len = strlen(prefix);
|
|
if( plen > 0 )
|
|
{
|
|
len = prefix_len + plen;
|
|
buf = new char [ len + 1 ];
|
|
strcpy(buf,prefix);
|
|
memcpy( &buf[prefix_len], message, plen);
|
|
buf[len]='\0';
|
|
}
|
|
mem = buf;
|
|
}
|
|
|
|
CNetPacket::CNetPacket(unsigned char pcode_type, const char *message, int plen)
|
|
{
|
|
code_type = 0;
|
|
len = 0;
|
|
buf = 0;
|
|
|
|
code_type = pcode_type;
|
|
if( plen > 0 )
|
|
{
|
|
len = plen;
|
|
buf = new char [ plen + 1];
|
|
memcpy( buf, message, len);
|
|
buf[len]='\0';
|
|
}
|
|
mem = buf;
|
|
}
|
|
|
|
CNetPacket::CNetPacket(CNetPacket &N, CNetPacket &M)
|
|
{
|
|
code_type = N.code_type;
|
|
len = N.len + M.len;
|
|
buf = new char [ len + 1];
|
|
memcpy( buf,N.buf,N.len);
|
|
memcpy( buf + N.len,M.buf, M.len);
|
|
buf[len]='\0';
|
|
mem = buf;
|
|
}
|
|
|
|
|
|
const CNetPacket& CNetPacket::operator=(CNetPacket &N)
|
|
{
|
|
delete mem;
|
|
code_type = N.code_type;
|
|
len = N.len;
|
|
buf = new char [ len + 1];
|
|
memcpy( buf,N.buf,len);
|
|
buf[len]='\0';
|
|
mem = buf;
|
|
return *this;
|
|
}
|
|
|
|
const CNetPacket& CNetPacket::operator=(CNetPacket *N)
|
|
{
|
|
delete mem;
|
|
if( N == 0 )
|
|
{
|
|
code_type = 0;
|
|
len = 0;
|
|
buf = 0;
|
|
mem = 0;
|
|
}
|
|
else
|
|
{
|
|
code_type = N->code_type;
|
|
len = N->len;
|
|
buf = new char [ len + 1];
|
|
memcpy( buf,N->buf,len);
|
|
buf[len]='\0';
|
|
mem = buf;
|
|
}
|
|
return *this;
|
|
}
|
|
|
|
|
|
CNetPacket::~CNetPacket()
|
|
{
|
|
delete mem;
|
|
}
|