Communication buffer that packs data into a memory buffer without any transformation. More...
#include <cnetcommbuffer.h>
Public Member Functions | |
cNetCommBuffer () | |
Constructor. | |
virtual | ~cNetCommBuffer () |
Destructor. | |
size_t | getRemainingMessageSize () |
return the length of the remaining buffer in bytes | |
virtual void | packObject (cObject *obj) |
Packs an object. | |
virtual cObject * | unpackObject () |
Unpacks and returns an object. | |
Pack basic types | |
virtual void | pack (char d) |
virtual void | pack (unsigned char d) |
virtual void | pack (bool d) |
virtual void | pack (short d) |
virtual void | pack (unsigned short d) |
virtual void | pack (int d) |
virtual void | pack (unsigned int d) |
virtual void | pack (long d) |
virtual void | pack (unsigned long d) |
virtual void | pack (opp_long_long d) |
virtual void | pack (opp_unsigned_long_long d) |
virtual void | pack (float d) |
virtual void | pack (double d) |
virtual void | pack (long double d) |
virtual void | pack (const char *d) |
virtual void | pack (const opp_string &d) |
virtual void | pack (SimTime d) |
Pack arrays of basic types | |
virtual void | pack (const char *d, int size) |
virtual void | pack (const unsigned char *d, int size) |
virtual void | pack (const bool *d, int size) |
virtual void | pack (const short *d, int size) |
virtual void | pack (const unsigned short *d, int size) |
virtual void | pack (const int *d, int size) |
virtual void | pack (const unsigned int *d, int size) |
virtual void | pack (const long *d, int size) |
virtual void | pack (const unsigned long *d, int size) |
virtual void | pack (const opp_long_long *d, int size) |
virtual void | pack (const opp_unsigned_long_long *d, int size) |
virtual void | pack (const float *d, int size) |
virtual void | pack (const double *d, int size) |
virtual void | pack (const long double *d, int size) |
virtual void | pack (const char **d, int size) |
virtual void | pack (const opp_string *d, int size) |
virtual void | pack (const SimTime *d, int size) |
Unpack basic types | |
virtual void | unpack (char &d) |
virtual void | unpack (unsigned char &d) |
virtual void | unpack (bool &d) |
virtual void | unpack (short &d) |
virtual void | unpack (unsigned short &d) |
virtual void | unpack (int &d) |
virtual void | unpack (unsigned int &d) |
virtual void | unpack (long &d) |
virtual void | unpack (unsigned long &d) |
virtual void | unpack (opp_long_long &d) |
virtual void | unpack (opp_unsigned_long_long &d) |
virtual void | unpack (float &d) |
virtual void | unpack (double &d) |
virtual void | unpack (long double &d) |
virtual void | unpack (const char *&d) |
void | unpack (char *&d) |
Unpacks a string -- storage will be allocated for it via new char[]. | |
virtual void | unpack (opp_string &d) |
virtual void | unpack (SimTime &) |
Unpack arrays of basic types | |
virtual void | unpack (char *d, int size) |
virtual void | unpack (unsigned char *d, int size) |
virtual void | unpack (bool *d, int size) |
virtual void | unpack (short *d, int size) |
virtual void | unpack (unsigned short *d, int size) |
virtual void | unpack (int *d, int size) |
virtual void | unpack (unsigned int *d, int size) |
virtual void | unpack (long *d, int size) |
virtual void | unpack (unsigned long *d, int size) |
virtual void | unpack (opp_long_long *d, int size) |
virtual void | unpack (opp_unsigned_long_long *d, int size) |
virtual void | unpack (float *d, int size) |
virtual void | unpack (double *d, int size) |
virtual void | unpack (long double *d, int size) |
virtual void | unpack (const char **d, int size) |
virtual void | unpack (opp_string *d, int size) |
virtual void | unpack (SimTime *d, int size) |
Communication buffer that packs data into a memory buffer without any transformation.
Definition at line 31 of file cnetcommbuffer.h.
cNetCommBuffer::cNetCommBuffer | ( | ) |
cNetCommBuffer::~cNetCommBuffer | ( | ) | [virtual] |
size_t cNetCommBuffer::getRemainingMessageSize | ( | ) |
return the length of the remaining buffer in bytes
Definition at line 527 of file cnetcommbuffer.cc.
Referenced by OverSimMessage::parsimUnpack().
{
return (mMsgSize - mPosition);
}
void cNetCommBuffer::pack | ( | char | d | ) | [virtual] |
Definition at line 57 of file cnetcommbuffer.cc.
Referenced by pack(), and packObject().
{ extendBufferFor(sizeof(char)); STORE(char,d); }
void cNetCommBuffer::pack | ( | unsigned char | d | ) | [virtual] |
Definition at line 64 of file cnetcommbuffer.cc.
{ extendBufferFor(sizeof(unsigned char)); STORE(unsigned char,d); }
void cNetCommBuffer::pack | ( | short | d | ) | [virtual] |
Definition at line 78 of file cnetcommbuffer.cc.
{ extendBufferFor(sizeof(short)); short d_buf = htons(d); STORE(short,d_buf); }
void cNetCommBuffer::pack | ( | const opp_string & | d | ) | [virtual] |
Definition at line 172 of file cnetcommbuffer.cc.
{ pack(d.c_str()); }
void cNetCommBuffer::pack | ( | const char ** | d, | |
int | size | |||
) | [virtual] |
Definition at line 287 of file cnetcommbuffer.cc.
{ for (int i = 0; i < size; i++) pack(d[i]); }
void cNetCommBuffer::pack | ( | const opp_string * | d, | |
int | size | |||
) | [virtual] |
Definition at line 293 of file cnetcommbuffer.cc.
{ for (int i = 0; i < size; i++) pack(d[i]); }
void cNetCommBuffer::pack | ( | long | d | ) | [virtual] |
Definition at line 110 of file cnetcommbuffer.cc.
{ extendBufferFor(sizeof(long)); long d_buf = htonl(d); STORE(long,d_buf); }
void cNetCommBuffer::pack | ( | const SimTime * | d, | |
int | size | |||
) | [virtual] |
Definition at line 177 of file cnetcommbuffer.cc.
{ for (int i = 0; i < size; i++) pack(d[i]); }
void cNetCommBuffer::pack | ( | SimTime | d | ) | [virtual] |
Definition at line 299 of file cnetcommbuffer.cc.
{ pack((opp_long_long)d.raw()); }
void cNetCommBuffer::pack | ( | unsigned long | d | ) | [virtual] |
Definition at line 118 of file cnetcommbuffer.cc.
{ extendBufferFor(sizeof(unsigned long)); unsigned long d_buf = htonl(d); STORE(unsigned long,d_buf); }
void cNetCommBuffer::pack | ( | const char * | d, | |
int | size | |||
) | [virtual] |
Definition at line 183 of file cnetcommbuffer.cc.
{ extendBufferFor(size*sizeof(char)); STOREARRAY(char,d,size); }
void cNetCommBuffer::pack | ( | const unsigned char * | d, | |
int | size | |||
) | [virtual] |
Definition at line 190 of file cnetcommbuffer.cc.
{ extendBufferFor(size*sizeof(unsigned char)); STOREARRAY(unsigned char,d,size); }
void cNetCommBuffer::pack | ( | unsigned short | d | ) | [virtual] |
Definition at line 86 of file cnetcommbuffer.cc.
{ extendBufferFor(sizeof(unsigned short)); unsigned short d_buf = htons(d); STORE(unsigned short,d_buf); }
void cNetCommBuffer::pack | ( | opp_long_long | d | ) | [virtual] |
Definition at line 126 of file cnetcommbuffer.cc.
{ extendBufferFor(sizeof(opp_long_long)); STORE(opp_long_long,d); }
void cNetCommBuffer::pack | ( | const bool * | d, | |
int | size | |||
) | [virtual] |
Definition at line 197 of file cnetcommbuffer.cc.
{ extendBufferFor(size*sizeof(bool)); STOREARRAY(bool,d,size); }
void cNetCommBuffer::pack | ( | const short * | d, | |
int | size | |||
) | [virtual] |
Definition at line 204 of file cnetcommbuffer.cc.
{ extendBufferFor(size*sizeof(short)); STOREARRAY(short,d,size); }
void cNetCommBuffer::pack | ( | opp_unsigned_long_long | d | ) | [virtual] |
Definition at line 133 of file cnetcommbuffer.cc.
{ extendBufferFor(sizeof(opp_unsigned_long_long)); STORE(opp_unsigned_long_long,d); }
void cNetCommBuffer::pack | ( | const unsigned short * | d, | |
int | size | |||
) | [virtual] |
Definition at line 212 of file cnetcommbuffer.cc.
{ extendBufferFor(size*sizeof(unsigned short)); STOREARRAY(unsigned short,d,size); }
void cNetCommBuffer::pack | ( | const int * | d, | |
int | size | |||
) | [virtual] |
Definition at line 220 of file cnetcommbuffer.cc.
{ extendBufferFor(size*sizeof(int)); STOREARRAY(int,d,size); }
void cNetCommBuffer::pack | ( | bool | d | ) | [virtual] |
Definition at line 71 of file cnetcommbuffer.cc.
{ extendBufferFor(sizeof(bool)); STORE(bool,d); }
void cNetCommBuffer::pack | ( | int | d | ) | [virtual] |
Definition at line 94 of file cnetcommbuffer.cc.
{ extendBufferFor(sizeof(int)); int d_buf = htonl(d); STORE(int,d_buf); }
void cNetCommBuffer::pack | ( | float | d | ) | [virtual] |
Definition at line 140 of file cnetcommbuffer.cc.
{ extendBufferFor(sizeof(float)); STORE(float,d); }
void cNetCommBuffer::pack | ( | const unsigned int * | d, | |
int | size | |||
) | [virtual] |
Definition at line 228 of file cnetcommbuffer.cc.
{ extendBufferFor(size*sizeof(unsigned int)); STOREARRAY(unsigned int,d,size); }
void cNetCommBuffer::pack | ( | const long * | d, | |
int | size | |||
) | [virtual] |
Definition at line 236 of file cnetcommbuffer.cc.
{ extendBufferFor(size*sizeof(long)); STOREARRAY(long,d,size); }
void cNetCommBuffer::pack | ( | double | d | ) | [virtual] |
Definition at line 147 of file cnetcommbuffer.cc.
{ extendBufferFor(sizeof(double)); STORE(double,d); }
void cNetCommBuffer::pack | ( | const unsigned long * | d, | |
int | size | |||
) | [virtual] |
Definition at line 244 of file cnetcommbuffer.cc.
{ extendBufferFor(size*sizeof(unsigned long)); STOREARRAY(unsigned long,d,size); }
void cNetCommBuffer::pack | ( | const opp_long_long * | d, | |
int | size | |||
) | [virtual] |
Definition at line 251 of file cnetcommbuffer.cc.
{ extendBufferFor(size*sizeof(opp_long_long)); STOREARRAY(opp_long_long,d,size); }
void cNetCommBuffer::pack | ( | unsigned int | d | ) | [virtual] |
Definition at line 102 of file cnetcommbuffer.cc.
{ extendBufferFor(sizeof(unsigned int)); unsigned int d_buf = htonl(d); STORE(unsigned int,d_buf); }
void cNetCommBuffer::pack | ( | long double | d | ) | [virtual] |
Definition at line 154 of file cnetcommbuffer.cc.
{ extendBufferFor(sizeof(long double)); STORE(long double,d); }
void cNetCommBuffer::pack | ( | const opp_unsigned_long_long * | d, | |
int | size | |||
) | [virtual] |
Definition at line 258 of file cnetcommbuffer.cc.
{ extendBufferFor(size*sizeof(opp_unsigned_long_long)); STOREARRAY(opp_unsigned_long_long,d,size); }
void cNetCommBuffer::pack | ( | const float * | d, | |
int | size | |||
) | [virtual] |
Definition at line 265 of file cnetcommbuffer.cc.
{ extendBufferFor(size*sizeof(float)); STOREARRAY(float,d,size); }
void cNetCommBuffer::pack | ( | const char * | d | ) | [virtual] |
Definition at line 163 of file cnetcommbuffer.cc.
{ int len = d ? strlen(d) : 0; pack(len); extendBufferFor(len*sizeof(char)); STOREARRAY(char,d,len); }
void cNetCommBuffer::pack | ( | const double * | d, | |
int | size | |||
) | [virtual] |
Definition at line 272 of file cnetcommbuffer.cc.
{ extendBufferFor(size*sizeof(double)); STOREARRAY(double,d,size); }
void cNetCommBuffer::pack | ( | const long double * | d, | |
int | size | |||
) | [virtual] |
Definition at line 279 of file cnetcommbuffer.cc.
{ extendBufferFor(size*sizeof(long double)); STOREARRAY(long double,d,size); }
void cNetCommBuffer::packObject | ( | cObject * | obj | ) | [virtual] |
Packs an object.
Definition at line 532 of file cnetcommbuffer.cc.
Referenced by GenericPacketParser::encapsulatePayload(), CryptoModule::signMessage(), and CryptoModule::verifyMessage().
{ pack(obj->getClassName()); obj->parsimPack(this); }
void cNetCommBuffer::unpack | ( | bool & | d | ) | [virtual] |
Definition at line 317 of file cnetcommbuffer.cc.
{ EXTRACT(bool,d); }
void cNetCommBuffer::unpack | ( | unsigned char & | d | ) | [virtual] |
Definition at line 312 of file cnetcommbuffer.cc.
{ EXTRACT(unsigned char,d); }
void cNetCommBuffer::unpack | ( | opp_string * | d, | |
int | size | |||
) | [virtual] |
Definition at line 513 of file cnetcommbuffer.cc.
{ for (int i = 0; i < size; i++) unpack(d[i]); }
void cNetCommBuffer::unpack | ( | SimTime * | d, | |
int | size | |||
) | [virtual] |
Definition at line 520 of file cnetcommbuffer.cc.
{ for (int i = 0; i < size; i++) unpack(d[i]); }
void cNetCommBuffer::unpack | ( | char & | d | ) | [virtual] |
Definition at line 306 of file cnetcommbuffer.cc.
Referenced by unpack(), and unpackObject().
{ EXTRACT(char,d); }
void cNetCommBuffer::unpack | ( | unsigned char * | d, | |
int | size | |||
) | [virtual] |
Definition at line 431 of file cnetcommbuffer.cc.
{ EXTRACTARRAY(unsigned char,d,size); }
void cNetCommBuffer::unpack | ( | long & | d | ) | [virtual] |
Definition at line 350 of file cnetcommbuffer.cc.
{ EXTRACT(long,d); d = ntohl(d); }
void cNetCommBuffer::unpack | ( | unsigned long & | d | ) | [virtual] |
Definition at line 357 of file cnetcommbuffer.cc.
{ EXTRACT(unsigned long,d); d = ntohl(d); }
void cNetCommBuffer::unpack | ( | opp_unsigned_long_long & | d | ) | [virtual] |
Definition at line 370 of file cnetcommbuffer.cc.
{ EXTRACT(opp_unsigned_long_long,d); }
void cNetCommBuffer::unpack | ( | float & | d | ) | [virtual] |
Definition at line 376 of file cnetcommbuffer.cc.
{ EXTRACT(float,d); }
void cNetCommBuffer::unpack | ( | const char *& | d | ) | [virtual] |
Definition at line 395 of file cnetcommbuffer.cc.
{ int len; unpack(len); char *tmp = new char[len+1]; EXTRACTARRAY(char,tmp,len); tmp[len] = '\0'; d = tmp; }
void cNetCommBuffer::unpack | ( | char *& | d | ) | [inline] |
Unpacks a string -- storage will be allocated for it via new char[].
Definition at line 106 of file cnetcommbuffer.h.
Referenced by unpack().
{unpack((const char *&)d);}
void cNetCommBuffer::unpack | ( | SimTime & | d | ) | [virtual] |
Definition at line 418 of file cnetcommbuffer.cc.
{ opp_long_long raw; unpack(raw); d.setRaw(raw); }
void cNetCommBuffer::unpack | ( | char * | d, | |
int | size | |||
) | [virtual] |
Definition at line 426 of file cnetcommbuffer.cc.
{ EXTRACTARRAY(char,d,size); }
void cNetCommBuffer::unpack | ( | unsigned short * | d, | |
int | size | |||
) | [virtual] |
Definition at line 448 of file cnetcommbuffer.cc.
{ EXTRACTARRAY(unsigned short,d,size); }
void cNetCommBuffer::unpack | ( | int * | d, | |
int | size | |||
) | [virtual] |
Definition at line 454 of file cnetcommbuffer.cc.
{ EXTRACTARRAY(int,d,size); }
void cNetCommBuffer::unpack | ( | long * | d, | |
int | size | |||
) | [virtual] |
Definition at line 466 of file cnetcommbuffer.cc.
{ EXTRACTARRAY(long,d,size); }
void cNetCommBuffer::unpack | ( | unsigned long * | d, | |
int | size | |||
) | [virtual] |
Definition at line 472 of file cnetcommbuffer.cc.
{ EXTRACTARRAY(unsigned long,d,size); }
void cNetCommBuffer::unpack | ( | short & | d | ) | [virtual] |
Definition at line 322 of file cnetcommbuffer.cc.
{ EXTRACT(short,d); d = ntohs(d); }
void cNetCommBuffer::unpack | ( | double * | d, | |
int | size | |||
) | [virtual] |
Definition at line 496 of file cnetcommbuffer.cc.
{ EXTRACTARRAY(double,d,size); }
void cNetCommBuffer::unpack | ( | const char ** | d, | |
int | size | |||
) | [virtual] |
Definition at line 507 of file cnetcommbuffer.cc.
{ for (int i = 0; i < size; i++) unpack(d[i]); }
void cNetCommBuffer::unpack | ( | opp_long_long * | d, | |
int | size | |||
) | [virtual] |
Definition at line 478 of file cnetcommbuffer.cc.
{ EXTRACTARRAY(opp_long_long,d,size); }
void cNetCommBuffer::unpack | ( | unsigned int & | d | ) | [virtual] |
Definition at line 343 of file cnetcommbuffer.cc.
{ EXTRACT(unsigned int,d); d = ntohl(d); }
void cNetCommBuffer::unpack | ( | opp_long_long & | d | ) | [virtual] |
Definition at line 364 of file cnetcommbuffer.cc.
{ EXTRACT(opp_long_long,d); }
void cNetCommBuffer::unpack | ( | long double & | d | ) | [virtual] |
Definition at line 388 of file cnetcommbuffer.cc.
{ EXTRACT(long double,d); }
void cNetCommBuffer::unpack | ( | opp_string & | d | ) | [virtual] |
Definition at line 407 of file cnetcommbuffer.cc.
{ int len; unpack(len); d.reserve(len+1); EXTRACTARRAY(char,d.buffer(),len); d.buffer()[len] = '\0'; }
void cNetCommBuffer::unpack | ( | short * | d, | |
int | size | |||
) | [virtual] |
Definition at line 442 of file cnetcommbuffer.cc.
{ EXTRACTARRAY(short,d,size); }
void cNetCommBuffer::unpack | ( | unsigned int * | d, | |
int | size | |||
) | [virtual] |
Definition at line 460 of file cnetcommbuffer.cc.
{ EXTRACTARRAY(unsigned,d,size); }
void cNetCommBuffer::unpack | ( | opp_unsigned_long_long * | d, | |
int | size | |||
) | [virtual] |
Definition at line 484 of file cnetcommbuffer.cc.
{ EXTRACTARRAY(opp_unsigned_long_long,d,size); }
void cNetCommBuffer::unpack | ( | long double * | d, | |
int | size | |||
) | [virtual] |
Definition at line 502 of file cnetcommbuffer.cc.
{ EXTRACTARRAY(long double,d,size); }
void cNetCommBuffer::unpack | ( | int & | d | ) | [virtual] |
Definition at line 336 of file cnetcommbuffer.cc.
{ EXTRACT(int,d); d = ntohl(d); }
void cNetCommBuffer::unpack | ( | double & | d | ) | [virtual] |
Definition at line 382 of file cnetcommbuffer.cc.
{ EXTRACT(double,d); }
void cNetCommBuffer::unpack | ( | bool * | d, | |
int | size | |||
) | [virtual] |
Definition at line 437 of file cnetcommbuffer.cc.
{ EXTRACTARRAY(bool,d,size); }
void cNetCommBuffer::unpack | ( | float * | d, | |
int | size | |||
) | [virtual] |
Definition at line 490 of file cnetcommbuffer.cc.
{ EXTRACTARRAY(float,d,size); }
void cNetCommBuffer::unpack | ( | unsigned short & | d | ) | [virtual] |
Definition at line 329 of file cnetcommbuffer.cc.
{ EXTRACT(unsigned short,d); d = ntohs(d); }
cObject * cNetCommBuffer::unpackObject | ( | ) | [virtual] |
Unpacks and returns an object.
Definition at line 538 of file cnetcommbuffer.cc.
Referenced by GenericPacketParser::decapsulatePayload().
{ char *classname = NULL; cObject *obj = NULL; try { unpack(classname); obj = createOne(classname); obj->parsimUnpack(this); } catch (...) { delete [] classname; delete obj; throw std::invalid_argument("Failed to parse received packet"); } delete [] classname; return obj; }