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().
void cNetCommBuffer::pack | ( | const SimTime * | d, | |
int | size | |||
) | [virtual] |
Definition at line 177 of file cnetcommbuffer.cc.
00178 { 00179 for (int i = 0; i < size; i++) 00180 pack(d[i]); 00181 }
void cNetCommBuffer::pack | ( | const opp_string * | d, | |
int | size | |||
) | [virtual] |
Definition at line 293 of file cnetcommbuffer.cc.
00294 { 00295 for (int i = 0; i < size; i++) 00296 pack(d[i]); 00297 }
void cNetCommBuffer::pack | ( | const char ** | d, | |
int | size | |||
) | [virtual] |
Definition at line 287 of file cnetcommbuffer.cc.
00288 { 00289 for (int i = 0; i < size; i++) 00290 pack(d[i]); 00291 }
void cNetCommBuffer::pack | ( | const long double * | d, | |
int | size | |||
) | [virtual] |
Definition at line 279 of file cnetcommbuffer.cc.
00280 { 00281 extendBufferFor(size*sizeof(long double)); 00282 STOREARRAY(long double,d,size); 00283 }
void cNetCommBuffer::pack | ( | const double * | d, | |
int | size | |||
) | [virtual] |
Definition at line 272 of file cnetcommbuffer.cc.
00273 { 00274 extendBufferFor(size*sizeof(double)); 00275 STOREARRAY(double,d,size); 00276 }
void cNetCommBuffer::pack | ( | const float * | d, | |
int | size | |||
) | [virtual] |
Definition at line 265 of file cnetcommbuffer.cc.
00266 { 00267 extendBufferFor(size*sizeof(float)); 00268 STOREARRAY(float,d,size); 00269 }
void cNetCommBuffer::pack | ( | const opp_unsigned_long_long * | d, | |
int | size | |||
) | [virtual] |
Definition at line 258 of file cnetcommbuffer.cc.
00259 { 00260 extendBufferFor(size*sizeof(opp_unsigned_long_long)); 00261 STOREARRAY(opp_unsigned_long_long,d,size); 00262 }
void cNetCommBuffer::pack | ( | const opp_long_long * | d, | |
int | size | |||
) | [virtual] |
Definition at line 251 of file cnetcommbuffer.cc.
00252 { 00253 extendBufferFor(size*sizeof(opp_long_long)); 00254 STOREARRAY(opp_long_long,d,size); 00255 }
void cNetCommBuffer::pack | ( | const unsigned long * | d, | |
int | size | |||
) | [virtual] |
Definition at line 244 of file cnetcommbuffer.cc.
00245 { 00246 extendBufferFor(size*sizeof(unsigned long)); 00247 STOREARRAY(unsigned long,d,size); 00248 }
void cNetCommBuffer::pack | ( | const long * | d, | |
int | size | |||
) | [virtual] |
Definition at line 236 of file cnetcommbuffer.cc.
00237 { 00238 extendBufferFor(size*sizeof(long)); 00239 STOREARRAY(long,d,size); 00240 }
void cNetCommBuffer::pack | ( | const unsigned int * | d, | |
int | size | |||
) | [virtual] |
Definition at line 228 of file cnetcommbuffer.cc.
00229 { 00230 extendBufferFor(size*sizeof(unsigned int)); 00231 STOREARRAY(unsigned int,d,size); 00232 }
void cNetCommBuffer::pack | ( | const int * | d, | |
int | size | |||
) | [virtual] |
Definition at line 220 of file cnetcommbuffer.cc.
00221 { 00222 extendBufferFor(size*sizeof(int)); 00223 STOREARRAY(int,d,size); 00224 }
void cNetCommBuffer::pack | ( | const unsigned short * | d, | |
int | size | |||
) | [virtual] |
Definition at line 212 of file cnetcommbuffer.cc.
00213 { 00214 extendBufferFor(size*sizeof(unsigned short)); 00215 STOREARRAY(unsigned short,d,size); 00216 }
void cNetCommBuffer::pack | ( | const short * | d, | |
int | size | |||
) | [virtual] |
Definition at line 204 of file cnetcommbuffer.cc.
00205 { 00206 extendBufferFor(size*sizeof(short)); 00207 STOREARRAY(short,d,size); 00208 }
void cNetCommBuffer::pack | ( | const bool * | d, | |
int | size | |||
) | [virtual] |
Definition at line 197 of file cnetcommbuffer.cc.
00198 { 00199 extendBufferFor(size*sizeof(bool)); 00200 STOREARRAY(bool,d,size); 00201 }
void cNetCommBuffer::pack | ( | const unsigned char * | d, | |
int | size | |||
) | [virtual] |
Definition at line 190 of file cnetcommbuffer.cc.
00191 { 00192 extendBufferFor(size*sizeof(unsigned char)); 00193 STOREARRAY(unsigned char,d,size); 00194 }
void cNetCommBuffer::pack | ( | const char * | d, | |
int | size | |||
) | [virtual] |
Definition at line 183 of file cnetcommbuffer.cc.
00184 { 00185 extendBufferFor(size*sizeof(char)); 00186 STOREARRAY(char,d,size); 00187 }
void cNetCommBuffer::pack | ( | SimTime | d | ) | [virtual] |
Definition at line 299 of file cnetcommbuffer.cc.
00300 { 00301 pack((opp_long_long)d.raw()); 00302 }
void cNetCommBuffer::pack | ( | const opp_string & | d | ) | [virtual] |
Definition at line 172 of file cnetcommbuffer.cc.
00173 { 00174 pack(d.c_str()); 00175 }
void cNetCommBuffer::pack | ( | const char * | d | ) | [virtual] |
Definition at line 163 of file cnetcommbuffer.cc.
00164 { 00165 int len = d ? strlen(d) : 0; 00166 00167 pack(len); 00168 extendBufferFor(len*sizeof(char)); 00169 STOREARRAY(char,d,len); 00170 }
void cNetCommBuffer::pack | ( | long double | d | ) | [virtual] |
Definition at line 154 of file cnetcommbuffer.cc.
00155 { 00156 extendBufferFor(sizeof(long double)); 00157 STORE(long double,d); 00158 }
void cNetCommBuffer::pack | ( | double | d | ) | [virtual] |
Definition at line 147 of file cnetcommbuffer.cc.
00148 { 00149 extendBufferFor(sizeof(double)); 00150 STORE(double,d); 00151 }
void cNetCommBuffer::pack | ( | float | d | ) | [virtual] |
Definition at line 140 of file cnetcommbuffer.cc.
00141 { 00142 extendBufferFor(sizeof(float)); 00143 STORE(float,d); 00144 }
void cNetCommBuffer::pack | ( | opp_unsigned_long_long | d | ) | [virtual] |
Definition at line 133 of file cnetcommbuffer.cc.
00134 { 00135 extendBufferFor(sizeof(opp_unsigned_long_long)); 00136 STORE(opp_unsigned_long_long,d); 00137 }
void cNetCommBuffer::pack | ( | opp_long_long | d | ) | [virtual] |
Definition at line 126 of file cnetcommbuffer.cc.
00127 { 00128 extendBufferFor(sizeof(opp_long_long)); 00129 STORE(opp_long_long,d); 00130 }
void cNetCommBuffer::pack | ( | unsigned long | d | ) | [virtual] |
Definition at line 118 of file cnetcommbuffer.cc.
00119 { 00120 extendBufferFor(sizeof(unsigned long)); 00121 unsigned long d_buf = htonl(d); 00122 STORE(unsigned long,d_buf); 00123 }
void cNetCommBuffer::pack | ( | long | d | ) | [virtual] |
Definition at line 110 of file cnetcommbuffer.cc.
00111 { 00112 extendBufferFor(sizeof(long)); 00113 long d_buf = htonl(d); 00114 STORE(long,d_buf); 00115 }
void cNetCommBuffer::pack | ( | unsigned int | d | ) | [virtual] |
Definition at line 102 of file cnetcommbuffer.cc.
00103 { 00104 extendBufferFor(sizeof(unsigned int)); 00105 unsigned int d_buf = htonl(d); 00106 STORE(unsigned int,d_buf); 00107 }
void cNetCommBuffer::pack | ( | int | d | ) | [virtual] |
Definition at line 94 of file cnetcommbuffer.cc.
00095 { 00096 extendBufferFor(sizeof(int)); 00097 int d_buf = htonl(d); 00098 STORE(int,d_buf); 00099 }
void cNetCommBuffer::pack | ( | unsigned short | d | ) | [virtual] |
Definition at line 86 of file cnetcommbuffer.cc.
00087 { 00088 extendBufferFor(sizeof(unsigned short)); 00089 unsigned short d_buf = htons(d); 00090 STORE(unsigned short,d_buf); 00091 }
void cNetCommBuffer::pack | ( | short | d | ) | [virtual] |
Definition at line 78 of file cnetcommbuffer.cc.
00079 { 00080 extendBufferFor(sizeof(short)); 00081 short d_buf = htons(d); 00082 STORE(short,d_buf); 00083 }
void cNetCommBuffer::pack | ( | bool | d | ) | [virtual] |
Definition at line 71 of file cnetcommbuffer.cc.
00072 { 00073 extendBufferFor(sizeof(bool)); 00074 STORE(bool,d); 00075 }
void cNetCommBuffer::pack | ( | unsigned char | d | ) | [virtual] |
Definition at line 64 of file cnetcommbuffer.cc.
00065 { 00066 extendBufferFor(sizeof(unsigned char)); 00067 STORE(unsigned char,d); 00068 }
void cNetCommBuffer::pack | ( | char | d | ) | [virtual] |
Definition at line 57 of file cnetcommbuffer.cc.
Referenced by pack(), and packObject().
00058 { 00059 extendBufferFor(sizeof(char)); 00060 STORE(char,d); 00061 }
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().
00533 { 00534 pack(obj->getClassName()); 00535 obj->parsimPack(this); 00536 }
void cNetCommBuffer::unpack | ( | SimTime * | d, | |
int | size | |||
) | [virtual] |
Definition at line 520 of file cnetcommbuffer.cc.
00521 { 00522 for (int i = 0; i < size; i++) 00523 unpack(d[i]); 00524 }
void cNetCommBuffer::unpack | ( | opp_string * | d, | |
int | size | |||
) | [virtual] |
Definition at line 513 of file cnetcommbuffer.cc.
00514 { 00515 for (int i = 0; i < size; i++) 00516 unpack(d[i]); 00517 }
void cNetCommBuffer::unpack | ( | const char ** | d, | |
int | size | |||
) | [virtual] |
Definition at line 507 of file cnetcommbuffer.cc.
00508 { 00509 for (int i = 0; i < size; i++) 00510 unpack(d[i]); 00511 }
void cNetCommBuffer::unpack | ( | long double * | d, | |
int | size | |||
) | [virtual] |
Definition at line 502 of file cnetcommbuffer.cc.
00503 { 00504 EXTRACTARRAY(long double,d,size); 00505 }
void cNetCommBuffer::unpack | ( | double * | d, | |
int | size | |||
) | [virtual] |
Definition at line 496 of file cnetcommbuffer.cc.
00497 { 00498 EXTRACTARRAY(double,d,size); 00499 }
void cNetCommBuffer::unpack | ( | float * | d, | |
int | size | |||
) | [virtual] |
Definition at line 490 of file cnetcommbuffer.cc.
00491 { 00492 EXTRACTARRAY(float,d,size); 00493 }
void cNetCommBuffer::unpack | ( | opp_unsigned_long_long * | d, | |
int | size | |||
) | [virtual] |
Definition at line 484 of file cnetcommbuffer.cc.
00485 { 00486 EXTRACTARRAY(opp_unsigned_long_long,d,size); 00487 }
void cNetCommBuffer::unpack | ( | opp_long_long * | d, | |
int | size | |||
) | [virtual] |
Definition at line 478 of file cnetcommbuffer.cc.
00479 { 00480 EXTRACTARRAY(opp_long_long,d,size); 00481 }
void cNetCommBuffer::unpack | ( | unsigned long * | d, | |
int | size | |||
) | [virtual] |
Definition at line 472 of file cnetcommbuffer.cc.
00473 { 00474 EXTRACTARRAY(unsigned long,d,size); 00475 }
void cNetCommBuffer::unpack | ( | long * | d, | |
int | size | |||
) | [virtual] |
Definition at line 466 of file cnetcommbuffer.cc.
00467 { 00468 EXTRACTARRAY(long,d,size); 00469 }
void cNetCommBuffer::unpack | ( | unsigned int * | d, | |
int | size | |||
) | [virtual] |
Definition at line 460 of file cnetcommbuffer.cc.
00461 { 00462 EXTRACTARRAY(unsigned,d,size); 00463 }
void cNetCommBuffer::unpack | ( | int * | d, | |
int | size | |||
) | [virtual] |
Definition at line 454 of file cnetcommbuffer.cc.
00455 { 00456 EXTRACTARRAY(int,d,size); 00457 }
void cNetCommBuffer::unpack | ( | unsigned short * | d, | |
int | size | |||
) | [virtual] |
Definition at line 448 of file cnetcommbuffer.cc.
00449 { 00450 EXTRACTARRAY(unsigned short,d,size); 00451 }
void cNetCommBuffer::unpack | ( | short * | d, | |
int | size | |||
) | [virtual] |
Definition at line 442 of file cnetcommbuffer.cc.
00443 { 00444 EXTRACTARRAY(short,d,size); 00445 }
void cNetCommBuffer::unpack | ( | bool * | d, | |
int | size | |||
) | [virtual] |
Definition at line 437 of file cnetcommbuffer.cc.
00438 { 00439 EXTRACTARRAY(bool,d,size); 00440 }
void cNetCommBuffer::unpack | ( | unsigned char * | d, | |
int | size | |||
) | [virtual] |
Definition at line 431 of file cnetcommbuffer.cc.
00432 { 00433 EXTRACTARRAY(unsigned char,d,size); 00434 }
void cNetCommBuffer::unpack | ( | char * | d, | |
int | size | |||
) | [virtual] |
Definition at line 426 of file cnetcommbuffer.cc.
00427 { 00428 EXTRACTARRAY(char,d,size); 00429 }
void cNetCommBuffer::unpack | ( | SimTime & | d | ) | [virtual] |
Definition at line 418 of file cnetcommbuffer.cc.
00419 { 00420 opp_long_long raw; 00421 unpack(raw); 00422 d.setRaw(raw); 00423 }
void cNetCommBuffer::unpack | ( | opp_string & | d | ) | [virtual] |
Definition at line 407 of file cnetcommbuffer.cc.
00408 { 00409 int len; 00410 unpack(len); 00411 00412 d.reserve(len+1); 00413 EXTRACTARRAY(char,d.buffer(),len); 00414 d.buffer()[len] = '\0'; 00415 }
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().
00106 {unpack((const char *&)d);}
void cNetCommBuffer::unpack | ( | const char *& | d | ) | [virtual] |
Definition at line 395 of file cnetcommbuffer.cc.
00396 { 00397 int len; 00398 unpack(len); 00399 00400 char *tmp = new char[len+1]; 00401 EXTRACTARRAY(char,tmp,len); 00402 tmp[len] = '\0'; 00403 d = tmp; 00404 }
void cNetCommBuffer::unpack | ( | long double & | d | ) | [virtual] |
Definition at line 388 of file cnetcommbuffer.cc.
00389 { 00390 EXTRACT(long double,d); 00391 }
void cNetCommBuffer::unpack | ( | double & | d | ) | [virtual] |
Definition at line 382 of file cnetcommbuffer.cc.
00383 { 00384 EXTRACT(double,d); 00385 }
void cNetCommBuffer::unpack | ( | float & | d | ) | [virtual] |
Definition at line 376 of file cnetcommbuffer.cc.
00377 { 00378 EXTRACT(float,d); 00379 }
void cNetCommBuffer::unpack | ( | opp_unsigned_long_long & | d | ) | [virtual] |
Definition at line 370 of file cnetcommbuffer.cc.
00371 { 00372 EXTRACT(opp_unsigned_long_long,d); 00373 }
void cNetCommBuffer::unpack | ( | opp_long_long & | d | ) | [virtual] |
Definition at line 364 of file cnetcommbuffer.cc.
00365 { 00366 EXTRACT(opp_long_long,d); 00367 }
void cNetCommBuffer::unpack | ( | unsigned long & | d | ) | [virtual] |
Definition at line 357 of file cnetcommbuffer.cc.
00358 { 00359 EXTRACT(unsigned long,d); 00360 d = ntohl(d); 00361 }
void cNetCommBuffer::unpack | ( | long & | d | ) | [virtual] |
Definition at line 350 of file cnetcommbuffer.cc.
00351 { 00352 EXTRACT(long,d); 00353 d = ntohl(d); 00354 }
void cNetCommBuffer::unpack | ( | unsigned int & | d | ) | [virtual] |
Definition at line 343 of file cnetcommbuffer.cc.
00344 { 00345 EXTRACT(unsigned int,d); 00346 d = ntohl(d); 00347 }
void cNetCommBuffer::unpack | ( | int & | d | ) | [virtual] |
Definition at line 336 of file cnetcommbuffer.cc.
00337 { 00338 EXTRACT(int,d); 00339 d = ntohl(d); 00340 }
void cNetCommBuffer::unpack | ( | unsigned short & | d | ) | [virtual] |
Definition at line 329 of file cnetcommbuffer.cc.
00330 { 00331 EXTRACT(unsigned short,d); 00332 d = ntohs(d); 00333 }
void cNetCommBuffer::unpack | ( | short & | d | ) | [virtual] |
Definition at line 322 of file cnetcommbuffer.cc.
00323 { 00324 EXTRACT(short,d); 00325 d = ntohs(d); 00326 }
void cNetCommBuffer::unpack | ( | bool & | d | ) | [virtual] |
Definition at line 317 of file cnetcommbuffer.cc.
00318 { 00319 EXTRACT(bool,d); 00320 }
void cNetCommBuffer::unpack | ( | unsigned char & | d | ) | [virtual] |
Definition at line 312 of file cnetcommbuffer.cc.
00313 { 00314 EXTRACT(unsigned char,d); 00315 }
void cNetCommBuffer::unpack | ( | char & | d | ) | [virtual] |
Definition at line 306 of file cnetcommbuffer.cc.
Referenced by unpack(), and unpackObject().
00307 { 00308 EXTRACT(char,d); 00309 }
cObject * cNetCommBuffer::unpackObject | ( | ) | [virtual] |
Unpacks and returns an object.
Definition at line 538 of file cnetcommbuffer.cc.
Referenced by GenericPacketParser::decapsulatePayload().
00539 { 00540 char *classname = NULL; 00541 cObject *obj = NULL; 00542 try { 00543 unpack(classname); 00544 obj = createOne(classname); 00545 obj->parsimUnpack(this); 00546 } catch (...) { 00547 delete [] classname; 00548 delete obj; 00549 throw std::invalid_argument("Failed to parse received packet"); 00550 } 00551 00552 delete [] classname; 00553 return obj; 00554 }