// Packet.cpp: Implementierung der Klasse CPacket. // ////////////////////////////////////////////////////////////////////// #include "../forcelibs.h" #include #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; }