MAK RTIspy API Documentation for HLA Evolved
Public Member Functions | Static Public Member Functions | Protected Types | Protected Member Functions | Static Protected Member Functions | Protected Attributes | Static Protected Attributes | Private Member Functions
DtRtiMetadata Class Reference

DtRtiMetadata is added to some RTI messages depending on the configuration of the RTI. More...

+ Inheritance diagram for DtRtiMetadata:
+ Collaboration diagram for DtRtiMetadata:

List of all members.

Public Member Functions

 DtRtiMetadata (caddr_t msg, DtMetadataType type)
 Constructor.
 DtRtiMetadata (DtRtiMsg *msg, DtMetadataType type)
virtual ~DtRtiMetadata ()
 Destructor.
virtual bool locate (void **mdVal, unsigned int &size) const
 Traverse metadata headers of attached message to find this instance's metadata type.
virtual bool nullify ()
 Find specified type and change type field in header to DtMetadataTypeNull but don't remove from message buffer.
virtual unsigned int remove ()
 Find specified type and remove from buffer, relocating metadata that remains and adjusting reported size of buffer.
virtual unsigned int purge ()
 Traverse metadata headers to find all nullified blocks and remove them from buffer, relocating metadata that remains and adjusting reported size of buffer.
virtual bool isCopyEnabled ()
 Set/Get the 'copy' bit in the specified metadata header.
virtual void setCopyEnable (bool copyEnable)
virtual bool setLengthAsValue (unsigned int value)
 Set an integer value to be transmitted without using an actual payload.
virtual bool getLengthAsValue (unsigned int &value) const
 Get an integer payload value from the payload length.

Static Public Member Functions

static unsigned int metadataMaxSize ()
 Report maximum size of metadata buffer.

Protected Types

typedef std::list
< DtMetadataNetHeader * > 
DtMetadataHeaderList

Protected Member Functions

virtual DtMetadataNetHeadergetFirstHeader () const
virtual DtMetadataNetHeadergetHeaderByType () const
virtual DtU16 compactMetadata (char *dst, DtMetadataHeaderList &retentionPool, bool newFinal)

Static Protected Member Functions

static bool locate (char const *msg, DtMetadataType type, void **mdVal, unsigned int &size)
 Traverse metadata headers of the given message to find the given metadata type.
static bool typeIsPresent (char const *msg, DtMetadataType type)
 Determines whether metadata type is present in msg.
static DtMetadataNetHeadergetFirstHeader (char const *msg)
static DtMetadataNetHeadergetNextHeader (DtMetadataNetHeader *hdr)
static DtMetadataNetHeadergetHeaderByType (char const *msg, DtMetadataType type)
static void transmogrifyHeader (DtMetadataNetHeader &src, DtMetadataNetHeader &dest)
 Transform from network to host format.
static void reverseTransmogrifyHeader (DtMetadataNetHeader &src, DtMetadataNetHeader &dest)
 Transform from host format to network format.
static unsigned int metadataSize (DtMetadataNetHeader &hdr)
static unsigned int metadataPayloadSize (DtMetadataNetHeader &hdr)

Protected Attributes

DtRtiMsgmyMsg
caddr_t myMsgAddr
unsigned int myMsgLen
char * myStartAddr
unsigned int mySize
 address returned by DtRtiMsg::addMetadata()
bool myCopyEnabled
const DtMetadataType myMetaDataType

Static Protected Attributes

static unsigned int theMaxMetadataBufferSize = 2048

Private Member Functions

 DtRtiMetadata (const DtRtiMetadata &)
 Copy CTOR Not Implemented -- Copy Not Allowed!
DtRtiMetadataoperator= (const DtRtiMetadata &)
 Assignment Operator Not Implemented -- Assignment Not Allowed!

Detailed Description

DtRtiMetadata is added to some RTI messages depending on the configuration of the RTI.


Member Typedef Documentation

typedef std::list< DtMetadataNetHeader* > DtRtiMetadata::DtMetadataHeaderList [protected]

Constructor & Destructor Documentation

DtRtiMetadata::DtRtiMetadata ( caddr_t  msg,
DtMetadataType  type 
)

Constructor.

References myMsgAddr, and myMsgLen.

References myMsgAddr, and myMsgLen.

Destructor.

References myMsgAddr, and NULL.

Copy CTOR Not Implemented -- Copy Not Allowed!


Member Function Documentation

DtU16 DtRtiMetadata::compactMetadata ( char *  dst,
DtMetadataHeaderList retentionPool,
bool  newFinal 
) [protected, virtual]
DtMetadataNetHeader * DtRtiMetadata::getFirstHeader ( ) const [protected, virtual]

References myMsgAddr.

Referenced by getHeaderByType(), purge(), and remove().

DtMetadataNetHeader * DtRtiMetadata::getFirstHeader ( char const *  msg) [static, protected]
DtMetadataNetHeader * DtRtiMetadata::getHeaderByType ( ) const [protected, virtual]
DtMetadataNetHeader * DtRtiMetadata::getHeaderByType ( char const *  msg,
DtMetadataType  type 
) [static, protected]
bool DtRtiMetadata::getLengthAsValue ( unsigned int &  value) const [virtual]

Get an integer payload value from the payload length.

Return boolean: metadata was found and value retrieved?

References locate().

Referenced by DtRtiMtdTransportType::get().

References metadataSize(), and transmogrifyHeader().

Referenced by getHeaderByType(), purge(), and remove().

bool DtRtiMetadata::locate ( void **  mdVal,
unsigned int &  size 
) const [virtual]
bool DtRtiMetadata::locate ( char const *  msg,
DtMetadataType  type,
void **  mdVal,
unsigned int &  size 
) [static, protected]
unsigned int DtRtiMetadata::metadataMaxSize ( ) [static]

Report maximum size of metadata buffer.

References theMaxMetadataBufferSize.

Referenced by DtRtiMsg::initDtRtiMsg().

unsigned int DtRtiMetadata::metadataPayloadSize ( DtMetadataNetHeader hdr) [static, protected]
unsigned int DtRtiMetadata::metadataSize ( DtMetadataNetHeader hdr) [static, protected]

Find specified type and change type field in header to DtMetadataTypeNull but don't remove from message buffer.

Returns true if specified type found, false otherwise.

References DtMetadataHeader_s::ctl, DtMetadataTypeNull, DtMetadataHeader_s::DtMetadataHeaderCtl_u::field, getHeaderByType(), myMsgAddr, reverseTransmogrifyHeader(), transmogrifyHeader(), and DtMetadataHeader_s::DtMetadataHeaderCtl_u::DtMetadataHeaderCtl_s::type.

DtRtiMetadata& DtRtiMetadata::operator= ( const DtRtiMetadata ) [private]

Assignment Operator Not Implemented -- Assignment Not Allowed!

unsigned int DtRtiMetadata::purge ( ) [virtual]

Traverse metadata headers to find all nullified blocks and remove them from buffer, relocating metadata that remains and adjusting reported size of buffer.

Returns number of metadata bytes purged.

References compactMetadata(), DtMetadataHeader_s::ctl, DtMetadataTypeNull, DtMetadataHeader_s::DtMetadataHeaderCtl_u::field, getFirstHeader(), getNextHeader(), metadataSize(), DtMetadataHeader_s::DtMetadataHeaderCtl_u::DtMetadataHeaderCtl_s::more, myMsgAddr, myMsgLen, transmogrifyHeader(), and DtMetadataHeader_s::DtMetadataHeaderCtl_u::DtMetadataHeaderCtl_s::type.

unsigned int DtRtiMetadata::remove ( ) [virtual]
void DtRtiMetadata::reverseTransmogrifyHeader ( DtMetadataNetHeader src,
DtMetadataNetHeader dest 
) [static, protected]
void DtRtiMetadata::setCopyEnable ( bool  copyEnable) [virtual]
bool DtRtiMetadata::setLengthAsValue ( unsigned int  value) [virtual]

Set an integer value to be transmitted without using an actual payload.

The payload length/padding data area is used (DtU16 size). This metadata value can be modified if it already exists in the message; however, it can only be added if the metadata is attached to a message. A message can allocate the space for the metadata whereas a buffer cannot. Return boolean: value was set successfully? /warning Not to be used if metadata contains actual payload data.

References DtRtiMsg::addMetadata(), DtMetadataHeader_s::DtMetadataHeaderCtl_u::DtMetadataHeaderCtl_s::copy, DtMetadataHeader_s::ctl, DtMetadataAlign16Bit, DtMetadataHeader_s::DtMetadataHeaderCtl_u::field, getHeaderByType(), DtMetadataHeader_s::DtMetadataHeaderCtl_u::DtMetadataHeaderCtl_s::hasPayload, DtMetadataHeader_s::lenOrVal, DtMetadataHeader_s::DtMetadataHeaderCtl_u::DtMetadataHeaderCtl_s::more, myCopyEnabled, myMetaDataType, myMsg, myStartAddr, reverseTransmogrifyHeader(), transmogrifyHeader(), DtMetadataHeader_s::DtMetadataHeaderCtl_u::DtMetadataHeaderCtl_s::type, and DtMetadataHeader_s::DtMetadataHeaderLenOrVal_u::val.

Referenced by DtRtiMtdTransportType::set().

void DtRtiMetadata::transmogrifyHeader ( DtMetadataNetHeader src,
DtMetadataNetHeader dest 
) [static, protected]

Transform from network to host format.

Contents of src parameter is in network format and result is assigned to contents of dest parameter

References DtMetadataHeader_s::DtMetadataHeaderCtl_u::allFields, DtMetadataHeader_s::ctl, DtMetadataHeader_s::lenOrVal, and DtMetadataHeader_s::DtMetadataHeaderLenOrVal_u::val.

Referenced by compactMetadata(), getHeaderByType(), getNextHeader(), isCopyEnabled(), locate(), nullify(), purge(), remove(), setCopyEnable(), and setLengthAsValue().

bool DtRtiMetadata::typeIsPresent ( char const *  msg,
DtMetadataType  type 
) [static, protected]

Determines whether metadata type is present in msg.

References getHeaderByType().


Member Data Documentation

caddr_t DtRtiMetadata::myMsgAddr [protected]
unsigned int DtRtiMetadata::myMsgLen [mutable, protected]
unsigned int DtRtiMetadata::mySize [protected]

address returned by DtRtiMsg::addMetadata()

char* DtRtiMetadata::myStartAddr [protected]
unsigned int DtRtiMetadata::theMaxMetadataBufferSize = 2048 [static, protected]

Referenced by metadataMaxSize().


The documentation for this class was generated from the following files:

Document ID: Generated on Thu Jun 14 14:15:04 EDT 2012 from SVN revision 116116
Copyright © 2005-2012 VT MÄK Inc. All Rights Reserved (www.mak.com)