cNetCommBuffer Class Reference

Communication buffer that packs data into a memory buffer without any transformation. More...

#include <cnetcommbuffer.h>

List of all members.

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)

Detailed Description

Communication buffer that packs data into a memory buffer without any transformation.

Definition at line 31 of file cnetcommbuffer.h.


Constructor & Destructor Documentation

cNetCommBuffer::cNetCommBuffer (  ) 

Constructor.

Definition at line 48 of file cnetcommbuffer.cc.

00049 {
00050 }

cNetCommBuffer::~cNetCommBuffer (  )  [virtual]

Destructor.

Definition at line 52 of file cnetcommbuffer.cc.

00053 {
00054 }


Member Function Documentation

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().

00528 {
00529     return (mMsgSize - mPosition);
00530 }

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 }


The documentation for this class was generated from the following files:
Generated on Wed May 26 16:21:16 2010 for OverSim by  doxygen 1.6.3