16 #include <tbb/tbb_allocator.h>
18 class portable_binary_iarchive;
19 class portable_binary_oarchive;
34 typedef unsigned char Byte;
35 typedef std::vector<Byte, tbb::tbb_allocator<Byte> >
ByteBuffer;
37 static const int theHeaderSize = (
sizeof(
unsigned short) +
sizeof(
char)) * 2;
40 #define packSizeOf(type) ((sizeof(type)-1)<<4)
43 #define unpackSizeOf(dataType) (((dataType)>>4)+1)
83 DtMessage(
unsigned short classId = 0,
unsigned short functionId = 0);
100 void printDebugMessageContents(std::ostream&);
103 const char* dataTypeName(
unsigned char dataType);
106 unsigned short classId()
const;
109 unsigned short functionId()
const;
112 const Byte* data()
const;
127 void serializeHeader(
unsigned short classId,
unsigned short functionId);
131 bool serializeWriteOut()
const;
135 void setSerializeWriteOut(
bool writeOut);
180 DtMessage& operator << (const std::pair<void*, int>& rawData);
188 void addData(
unsigned int dataType,
const void* data,
int dataSize);
191 bool canReadData()
const;
195 unsigned char nextDataType()
const;
201 unsigned int nextDataSize()
const;
205 const void* nextDataPointer()
const;
208 void skipToNextData();
212 void advanceRead(
size_t bytes);
217 void getData(
int dataType,
void* output);
226 template <
typename T1>
232 template <
typename T1,
typename T2>
238 template <
typename T1,
typename T2,
typename T3>
241 *
this << t1 << t2 << t3;
244 template <
typename T1,
typename T2,
typename T3,
typename T4>
247 *
this << t1 << t2 << t3 << t4;
250 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5>
253 *
this << t1 << t2 << t3 << t4 << t5;
256 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
260 *
this << t1 << t2 << t3 << t4 << t5 << t6;
263 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
264 typename T6,
typename T7>
267 *
this << t1 << t2 << t3 << t4 << t5 << t6 << t7;
270 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
271 typename T6,
typename T7,
typename T8>
274 *
this << t1 << t2 << t3 << t4 << t5 << t6 << t7 << t8;
281 template <
typename T1>
287 template <
typename T1,
typename T2>
293 template <
typename T1,
typename T2,
typename T3>
296 *
this >> t1 >> t2 >> t3;
299 template <
typename T1,
typename T2,
typename T3,
typename T4>
302 *
this >> t1 >> t2 >> t3 >> t4;
305 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5>
308 *
this >> t1 >> t2 >> t3 >> t4 >> t5;
311 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
315 *
this >> t1 >> t2 >> t3 >> t4 >> t5 >> t6;
318 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
319 typename T6,
typename T7>
322 *
this >> t1 >> t2 >> t3 >> t4 >> t5 >> t6 >> t7;
325 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
326 typename T6,
typename T7,
typename T8>
327 void readMultiple(T1& t1,T2& t2,T3& t3,T4& t4,T5& t5,T6& t6,T7& t7,T8& t8)
329 *
this >> t1 >> t2 >> t3 >> t4 >> t5 >> t6 >> t7 >> t8;
333 template <
typename T1>
336 if(mySerializeWriteOutFlag)
342 template <
typename T1,
typename T2>
345 if(mySerializeWriteOutFlag)
351 template <
typename T1,
typename T2,
typename T3>
354 if(mySerializeWriteOutFlag)
355 *
this >> t1 >> t2 >> t3;
357 *
this << t1 << t2 << t3;
360 template <
typename T1,
typename T2,
typename T3,
typename T4>
363 if(mySerializeWriteOutFlag)
364 *
this >> t1 >> t2 >> t3 >> t4;
366 *
this << t1 << t2 << t3 << t4;
369 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5>
372 if(mySerializeWriteOutFlag)
373 *
this >> t1 >> t2 >> t3 >> t4 >> t5;
375 *
this << t1 << t2 << t3 << t4 << t5;
378 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
380 void serialize(T1& t1,T2& t2,T3& t3,T4& t4,T5& t5,T6& t6)
382 if(mySerializeWriteOutFlag)
383 *
this >> t1 >> t2 >> t3 >> t4 >> t5 >> t6;
385 *
this << t1 << t2 << t3 << t4 << t5 << t6;
388 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
389 typename T6,
typename T7>
390 void serialize(T1& t1,T2& t2,T3& t3,T4& t4,T5& t5,T6& t6,T7& t7)
392 if(mySerializeWriteOutFlag)
393 *
this >> t1 >> t2 >> t3 >> t4 >> t5 >> t6 >> t7;
395 *
this << t1 << t2 << t3 << t4 << t5 << t6 << t7;
398 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
399 typename T6,
typename T7,
typename T8>
400 void serialize(T1& t1,T2& t2,T3& t3,T4& t4,T5& t5,T6& t6,T7& t7,T8& t8)
402 if(mySerializeWriteOutFlag)
403 *
this >> t1 >> t2 >> t3 >> t4 >> t5 >> t6 >> t7 >> t8;
405 *
this << t1 << t2 << t3 << t4 << t5 << t6 << t7 << t8;
409 template <
typename T>
415 class FastStringBuf :
public std::stringbuf
418 const char* c_str()
const {
return pbase();}
419 size_t outputSize()
const
421 return pptr() - pbase();
425 std::pair<void*,int> configMemory;
427 if(serializeWriteOut())
430 serialize(configMemory);
432 std::istringstream memoryStream;
434 memoryStream.str(std::string((
char*)configMemory.first,configMemory.second));
436 portable_binary_iarchive ia(memoryStream);
441 delete[] (
char*)configMemory.first;
447 FastStringBuf fastBuffer;
449 std::ostream memoryStream(&fastBuffer);
451 portable_binary_oarchive oa(memoryStream);
456 configMemory.first = (
void*) fastBuffer.c_str();
457 configMemory.second = fastBuffer.outputSize();
459 serialize(configMemory);
466 void setClassId(
unsigned short classId);
469 void setFunctionId(
unsigned short functionId);
DataType
Definition: DtMessage.h:47
A unicode string. DtUnicode stores a UTF-16 encoded unicode string. Code Point, a Unicode character...
Definition: DtUnicode.h:33
void serialize(T1 &t1)
Helper functions for doing multiple adds and reads.
Definition: DtMessage.h:334
#define DT_DLL_VRVUTIL
Definition: vrvUtil.h:34
void addMultiple(T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7)
Helper functions for doing multiple adds and reads.
Definition: DtMessage.h:265
The IGI Message. Is easily encoded and decoding using stream operators. It also provides validation d...
Definition: DtMessage.h:30
void readMultiple(T1 &t1, T2 &t2, T3 &t3, T4 &t4, T5 &t5, T6 &t6, T7 &t7, T8 &t8)
Helper functions for doing multiple adds and reads.
Definition: DtMessage.h:327
std::vector< Byte, tbb::tbb_allocator< Byte > > ByteBuffer
Definition: DtMessage.h:35
DT_DLL_VRFGUICORE makVrv::DtMessage & operator<<(DtMessage &msg, const makVrf::DtNetworkMessageAgentInterface &)
voidpf void uLong size
Definition: ioapi.h:39
void readMultiple(T1 &t1)
Helper functions for doing multiple adds and reads.
Definition: DtMessage.h:282
void addMultiple(T1 t1, T2 t2, T3 t3, T4 t4, T5 t5)
Helper functions for doing multiple adds and reads.
Definition: DtMessage.h:251
void readMultiple(T1 &t1, T2 &t2, T3 &t3, T4 &t4, T5 &t5, T6 &t6, T7 &t7)
Helper functions for doing multiple adds and reads.
Definition: DtMessage.h:320
unsigned char Byte
Definition: DtMessage.h:34
void serialize(T1 &t1, T2 &t2, T3 &t3, T4 &t4)
Helper functions for doing multiple adds and reads.
Definition: DtMessage.h:361
void readMultiple(T1 &t1, T2 &t2)
Helper functions for doing multiple adds and reads.
Definition: DtMessage.h:288
void addMultiple()
Helper functions for doing multiple adds and reads.
Definition: DtMessage.h:222
Contains DLL export macros.
void addMultiple(T1 t1)
Helper functions for doing multiple adds and reads.
Definition: DtMessage.h:227
UInt8 Bool
Definition: stateDataTypes.h:20
void serialize(T1 &t1, T2 &t2, T3 &t3, T4 &t4, T5 &t5, T6 &t6, T7 &t7, T8 &t8)
Helper functions for doing multiple adds and reads.
Definition: DtMessage.h:400
void readMultiple(T1 &t1, T2 &t2, T3 &t3, T4 &t4, T5 &t5, T6 &t6)
Helper functions for doing multiple adds and reads.
Definition: DtMessage.h:313
void readMultiple(T1 &t1, T2 &t2, T3 &t3, T4 &t4, T5 &t5)
Helper functions for doing multiple adds and reads.
Definition: DtMessage.h:306
#define packSizeOf(type)
Definition: DtMessage.h:40
void addMultiple(T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6)
Helper functions for doing multiple adds and reads.
Definition: DtMessage.h:258
void addMultiple(T1 t1, T2 t2, T3 t3)
Helper functions for doing multiple adds and reads.
Definition: DtMessage.h:239
ByteBuffer::const_iterator myReadIter
Helper functions for doing multiple adds and reads.
Definition: DtMessage.h:472
void readMultiple()
Helper functions for doing multiple adds and reads.
Definition: DtMessage.h:277
void serialize(T1 &t1, T2 &t2, T3 &t3, T4 &t4, T5 &t5, T6 &t6)
Helper functions for doing multiple adds and reads.
Definition: DtMessage.h:380
void addMultiple(T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7, T8 t8)
Helper functions for doing multiple adds and reads.
Definition: DtMessage.h:272
void addMultiple(T1 t1, T2 t2)
Helper functions for doing multiple adds and reads.
Definition: DtMessage.h:233
bool mySerializeWriteOutFlag
Helper functions for doing multiple adds and reads.
Definition: DtMessage.h:473
void serialize(T1 &t1, T2 &t2)
Helper functions for doing multiple adds and reads.
Definition: DtMessage.h:343
void serializeViaArchive(T &t)
Helper functions for doing multiple adds and reads.
Definition: DtMessage.h:410
void serialize(T1 &t1, T2 &t2, T3 &t3, T4 &t4, T5 &t5, T6 &t6, T7 &t7)
Helper functions for doing multiple adds and reads.
Definition: DtMessage.h:390
DT_DLL_VRFGUICORE makVrv::DtMessage & operator>>(DtMessage &msg, makVrf::DtNetworkMessageAgentInterface &)
ByteBuffer myBuffer
Helper functions for doing multiple adds and reads.
Definition: DtMessage.h:471
void readMultiple(T1 &t1, T2 &t2, T3 &t3)
Helper functions for doing multiple adds and reads.
Definition: DtMessage.h:294
void readMultiple(T1 &t1, T2 &t2, T3 &t3, T4 &t4)
Helper functions for doing multiple adds and reads.
Definition: DtMessage.h:300
void addMultiple(T1 t1, T2 t2, T3 t3, T4 t4)
Helper functions for doing multiple adds and reads.
Definition: DtMessage.h:245
void serialize(T1 &t1, T2 &t2, T3 &t3)
Helper functions for doing multiple adds and reads.
Definition: DtMessage.h:352
void serialize(T1 &t1, T2 &t2, T3 &t3, T4 &t4, T5 &t5)
Helper functions for doing multiple adds and reads.
Definition: DtMessage.h:370