VR-Link API Documentation for HLA 1516
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
List of all members | Public Member Functions | Protected Member Functions | Static Protected Member Functions | Protected Attributes | Private Member Functions
DtReflectedEntityList Class Reference

Instances of DtReflectedEntityList are used to manage remote entities from the network. More...

+ Inheritance diagram for DtReflectedEntityList:
+ Collaboration diagram for DtReflectedEntityList:

Public Member Functions

 DtReflectedEntityList (DtExerciseConn *exConn, bool smoothCapable=false, const DtDDMRegionSet *regionSetToUse=0)
 Constructor that uses subscription criteria from the exConn's fomMapper. More...
 
 DtReflectedEntityList (DtExerciseConn *exConn, const DtString &updateRateTag, bool smoothCapable=false, const DtDDMRegionSet *regionSetToUse=0)
 
 DtReflectedEntityList (DtExerciseConn *exConn, const DtList *handleList, bool smoothCapable=false, const DtDDMRegionSet *regionSetToUse=0)
 Constructor that uses a handle list as subscription criteria. More...
 
 DtReflectedEntityList (DtExerciseConn *exConn, const DtList *handleList, const DtString &updateRateTag, bool smoothCapable=false, const DtDDMRegionSet *regionSetToUse=0)
 
virtual ~DtReflectedEntityList ()
 Destructor. More...
 
virtual DtReflectedEntitylookup (RTI::ObjectInstanceHandle id)
 Look up entity by object handle. More...
 
virtual DtReflectedEntitylookup (const DtGlobalObjectDesignator &objName)
 Look up entity by name. More...
 
virtual DtReflectedEntitylookup (const DtEntityIdentifier &entityId)
 Look up entity by entityId. More...
 
virtual DtReflectedEntityfirst () const
 Get the first entity in the list. More...
 
virtual DtReflectedEntitylast () const
 Get the last entity in the list. More...
 
virtual void addToObjectList (DtReflectedObject *refObj)
 Adds an object the the list. More...
 
virtual void addToEntityIdentifierHashList (DtReflectedEntity *ent)
 Adds the entity id of ent to myEntityIdentifierHashlist. More...
 
virtual void addEntityAdditionCallback (DtEntityCallbackFunction cb, void *userData)
 Entity added callback registration. More...
 
virtual void removeEntityAdditionCallback (DtEntityCallbackFunction cb, void *userData)
 Entity added callback deregistration. More...
 
virtual void addEntityRemovalCallback (DtEntityCallbackFunction cb, void *userData)
 Entity removed callback registration. More...
 
virtual void removeEntityRemovalCallback (DtEntityCallbackFunction cb, void *userData)
 Entity removed callback deregistration. More...
 
virtual void discoverOnlyWhenEntityTypeKnown (bool yesNo)
 Allows one to specify whether discover should delayed until the entity type is known before adding the entity to the list. More...
 
- Public Member Functions inherited from DtReflectedObjectList
 DtReflectedObjectList (DtExerciseConn *exConn, const DtDDMRegionSet *regionSetToUse=0, const DtString &updateRateTag=DtString(""))
 Constructor. More...
 
virtual ~DtReflectedObjectList ()
 destructor More...
 
virtual DtReflectedObjectlookupObj (RTI::ObjectInstanceHandle id)
 Look up object by identifier. More...
 
virtual DtReflectedObjectlookupObj (const DtGlobalObjectDesignator &objName)
 Look up object by global ID (which is the object name in RTI1.3.3). More...
 
virtual DtReflectedObjectfirstObj () const
 Get the first/last object in the list. More...
 
virtual DtReflectedObjectlastObj () const
 
virtual int count () const
 Get number of objects. More...
 
virtual DtExerciseConnexerciseConn () const
 Get my exerciseConn. More...
 
virtual void manageObjectClass (RTI::ObjectClassHandle handle)
 Register callbacks with exercise connection so that we get notified when an object of this class is discovered. More...
 
virtual bool removeObject (const DtObjectId &id)
 Have the application act as though we had never discovered the object. More...
 
virtual void addObjectAdditionCallback (DtReflectedObjectCallbackFunction cb, void *userData)
 Object added callback registration/deregistration. More...
 
virtual void removeObjectAdditionCallback (DtReflectedObjectCallbackFunction cb, void *userData)
 
virtual void addObjectRemovalCallback (DtReflectedObjectCallbackFunction cb, void *userData)
 Object removed callback registration/deregistration. More...
 
virtual void removeObjectRemovalCallback (DtReflectedObjectCallbackFunction cb, void *userData)
 
virtual void print ()
 Print the SRs of all objects. More...
 
virtual void setTimeoutProcessing (bool onOff)
 Set whether or not timeout processing occurs. More...
 
virtual bool isTimeoutProcessing () const
 Get whether or not timeout processing occurs. More...
 
virtual void setWaitListRefreshEnabled (bool on)
 Set whether or not we will request updates for objects which have not met discovery and are therefor wait listed. More...
 
virtual void setTimeoutInterval (DtTime time)
 Set/Get the remote object timeout period. More...
 
virtual DtTime timeoutInterval ()
 
virtual void setWaitlistRefreshPeriod (DtTime time)
 Set/Get the wait list refresh period. More...
 
virtual DtTime waitlistRefreshPeriod ()
 
virtual void setDiscoveryCondition (DtDiscoveryCondition fn, void *usr)
 Set the checker function which will determine when an object gets discovered and put into the reflected list. More...
 
virtual void clearDiscoveryCondition ()
 Unregisters the checker function set in setDiscoverCondition. More...
 
virtual const DtDDMRegionSetsubscribedRegions ()
 Returns list of regions subscribed to. More...
 

Protected Member Functions

virtual const DtListdfltHandleList ()
 Returns the list of handles that the FOM Mapper associates with a DtReflectedEntityList. More...
 
virtual DtReflectedObjectnewReflectedObject (DtHlaObject *obj) const
 Override of the virtual function in DtReflectedObjectList. More...
 
virtual DtReflectedEntitynewReflectedEntity (DtHlaObject *obj) const
 Create a remote entity object for the HLA object. More...
 
virtual void removeAndDelete (DtReflectedObject *object, char *msg)
 Override of the virtual function in DtReflectedObjectList. More...
 
virtual void removeAndDelete (DtReflectedEntity *entity, char *msg=NULL)
 Default calls down to base class version, but can be overridden. More...
 
virtual void objectAdded (DtReflectedObject *obj)
 Called from processDiscoverObject() after a remote entity has been added to the list. More...
 
virtual void entityAdded (DtReflectedEntity *ent)
 Called by objectAdded (which is called from processDiscoverObject()) after a remote entity has been added to the list. More...
 
virtual void initializeDIGuy ()
 Initialize the DIGuyObject reflected list and callbacks Checks if "DIGuyObject" class is in FOM. More...
 
virtual void processDiGuyObjectAddition (DtReflectedDIGuyObject *beam)
 Called by similar callback functions registered with reflected DIGuyObject list on additions/removals/updates. More...
 
virtual void processDiGuyObjectUpdate (DtReflectedDIGuyObject *beam)
 
virtual void processDiGuyObjectRemoval (DtReflectedDIGuyObject *beam)
 
virtual void resolveOrphans ()
 Check if any orphanBeams have non-NULL emittingSystemId. More...
 
- Protected Member Functions inherited from DtReflectedObjectList
virtual void processDiscoverObject (DtHlaObject *obj)
 Process the discovery of a remote object on the network. More...
 
virtual void processRemoveObject (DtHlaObject *obj)
 Process the removal of a remote object from the network. More...
 
virtual void processTimedOutObjectReflect (const DtStateMsg &msg, DtHlaObject *obj)
 Handle the receipt of attributes for a remote object which was timed out. More...
 
virtual void doTimeouts ()
 Remove any remote objects which have not been updated during the timeout period. More...
 
virtual void doRequestWaitListUpdates ()
 Request an update for any objects which have not met their discovery criteria yet. More...
 
virtual bool shouldBeTimedOut (DtReflectedObject *object)
 Returns whether or not the object should be timed out. More...
 
virtual void timeOutObject (DtReflectedObject *object)
 Times out object by removing it from the remote object list and deleting it. More...
 
virtual void unTimeOutObject (DtHlaObject *obj)
 Manages callbacks and data used for reinstating a remote object which was timed out. More...
 
virtual void addObjectClass (RTI::ObjectClassHandle handle)
 Register interest in this FOM object class. More...
 
virtual void addObjectClassByName (const char *className)
 Register interest in this FOM object class by className. More...
 
virtual void init (const DtList *handleList)
 Register interest in a whole list of RTI::ObjectClassHandles all at once. More...
 
void emptyLists ()
 Empty the object list and the timeout list. More...
 
void emptyCallbackLists ()
 Empty the callback lists. More...
 
virtual void processObjectAdditionCallbacks (DtReflectedObject *object)
 Process object addition/removal callbacks. More...
 
virtual void processObjectRemovalCallbacks (DtReflectedObject *object)
 
virtual void findAlreadyDiscoveredObjects ()
 When list is created, we call this function to go through the list of all discovered HLA objects to see if any should be managed by this list. More...
 
virtual void checkDiscoveryCondition (DtReflectedObject *refObj)
 
virtual bool readyToAdd (DtReflectedObject *obj)
 Returns true if the obj is ready to be added to myObjectList; calls myWaitListChecker from within. More...
 
virtual DtReflectedObjectlookupObjInWaitList (RTI::ObjectInstanceHandle id)
 Find object in waitList by identifier. More...
 
virtual DtReflectedObjectlookupObjInWaitList (const DtGlobalObjectDesignator &name)
 Find object in waitList by name. More...
 
void unsubscribeRegions ()
 

Static Protected Member Functions

static bool checkEntityType (DtReflectedObject *obj, void *usr)
 Callback which checks whether the entity type has arrived yet. More...
 
static void checkEntityId (DtReflectedEntity *ent, void *usr)
 Callback which checks whether the entity id of the entity has arrived yet. More...
 
static void diGuyObjectAdditionCb (DtReflectedDIGuyObject *beam, void *usr)
 Callback functions registered with the reflected DIGuyObject list on DIGuyObject additions, updates, and removals. More...
 
static void diGuyObjectUpdateCb (DtReflectedDIGuyObject *beam, void *usr)
 
static void diGuyObjectRemovalCb (DtReflectedDIGuyObject *beam, void *usr)
 
static void resolveOrphansPostDrainCb (void *usr)
 Callback that calls resolveOrphans. More...
 
static bool delayDiGuyObjectDiscoveryCondition (DtReflectedObject *beam, void *usr)
 The following discovery condition function gets set for DiGuyObjects when users register a discovery condition for either DtReflectedEmitterSystemList or its beam list. More...
 
- Static Protected Member Functions inherited from DtReflectedObjectList
static void discoverObjectCb (DtHlaObject *hlaObj, void *rel)
 Cast the void* to a DtReflectedObjectList* and calls processDiscoverObject(). More...
 
static void removeObjectCb (DtHlaObject *hlaObj, void *rel)
 Cast the void* to a DtReflectedObjectList* and calls processRemoveObject(). More...
 
static void timedOutObjectReflectCb (const DtStateMsg &msg, DtHlaObject *obj, void *usr)
 Cast the void* to a DtReflectedObjectList* and calls processTimedOutObjectReflect(). More...
 
static void doTimeoutsPostDrainCb (void *usr)
 Calls doTimeouts. More...
 
static void doRequestWaitListUpdatesPostDrainCb (void *usr)
 Calls doRequestWaitListUpdates. More...
 
static void postUpdateCb (DtReflectedObject *obj, void *usr)
 Calls checkDiscoveryCondition. More...
 

Protected Attributes

bool mySmoothCapable
 Determines whether to use smoothing for reflected entities. More...
 
DtHashlist myEntityIdentifierHashlist
 Hash list used for lookup of entity identifiers. More...
 
std::set
< DtReflectedDIGuyObject * > 
myOrphanDiGuyObjects
 
DtReflectedDIGuyObjectListmyReflectedDiGuyObjects
 
- Protected Attributes inherited from DtReflectedObjectList
DtExerciseConnmyExConn
 
DtRefHlaObjectMap myObjectList
 
DtHashList myObjectListByName
 
DtRefHlaObjectMap myWaitList
 
DtList myTimedOutObjectList
 
std::vector
< RTI::ObjectClassHandle > 
myHandleList
 
DtIntrusiveList myObjectAddedCallbacks
 
DtIntrusiveList myObjectRemovedCallbacks
 
DtTime myTimeoutInterval
 
bool myTimeoutProcessingFlag
 
bool myWaitListRequestUpdateFlag
 
DtDiscoveryCondition myDiscoveryCondition
 
void * myDiscoveryConditionParameter
 
DtTime myWaitlistTime
 
DtTime myWaitlistRefreshPeriod
 
DtDDMRegionSet mySubscribedRegions
 
DtString myUpdateRateTag
 

Private Member Functions

 DtReflectedEntityList (const DtReflectedEntityList &orig)
 Copy constructor – not implemented. More...
 
DtReflectedEntityListoperator= (const DtReflectedEntityList &orig)
 Assignment operator – not implemented. More...
 

Additional Inherited Members

- Static Public Member Functions inherited from DtReflectedObjectList
static void setAutoSubscribeFlag (bool flag)
 Set/Get flag which determines whether to subscribe to object classes that this list manages. More...
 
static bool autoSubscribeFlag ()
 
static void setRequestClassUpdateFlag (bool onOff)
 Set/Get flag that determines whether we request updates from all objects of the object classes we subscribe to. More...
 
static bool requestClassUpdateFlag ()
 
static void setRequestObjectUpdateFlag (bool onOff)
 Set/Get flag that determines whether we request updates from an object as we discover it. More...
 
static bool requestObjectUpdateFlag ()
 
static void findDiscoveredObjectsCb (void *usr)
 Post-drain callback that calls findAlreadyDiscovedObjects(). More...
 
- Static Protected Attributes inherited from DtReflectedObjectList
static bool theAutoSubscribeFlag
 
static bool theRequestClassUpdateFlag
 
static bool theRequestObjectUpdateFlag
 

Detailed Description

Instances of DtReflectedEntityList are used to manage remote entities from the network.

DtReflectedEntityList, when instantiated, subscribes to all of the classes either specified by the FOM Mapper used by the DtExerciseConn or provided in the form of Object Class Handles. When an object of type handled by DtReflectedEntityList is discovered, a DtReflectedEntity is created and added to the list. DtReflectedEntityList provides a mechanism to maintain the list of remote entities and their data. In addition, DtReflectedEntityList provides callback mechanisms that the user may register for, so that the user may be notified and do certain processing when an entity is added/removed from the reflected entity list.

Examples

Constructor & Destructor Documentation

DtReflectedEntityList::DtReflectedEntityList ( DtExerciseConn exConn,
bool  smoothCapable = false,
const DtDDMRegionSet regionSetToUse = 0 
)

Constructor that uses subscription criteria from the exConn's fomMapper.

This constructor determines what entity classes to subscribe to by obtaining them from the exConn's fomMapper.

Parameters
smoothCapableIf smoothCapable is set to true, any reflected entity maintained by this list will use a smoother.
DtReflectedEntityList::DtReflectedEntityList ( DtExerciseConn exConn,
const DtString updateRateTag,
bool  smoothCapable = false,
const DtDDMRegionSet regionSetToUse = 0 
)
DtReflectedEntityList::DtReflectedEntityList ( DtExerciseConn exConn,
const DtList handleList,
bool  smoothCapable = false,
const DtDDMRegionSet regionSetToUse = 0 
)

Constructor that uses a handle list as subscription criteria.

This constructor determines what entity classes to subscribe to by obtaining them from the handle list.

Parameters
handleListis a list of RTI::ObjectClassHandle's that specifies what classes to subscribe to.
smoothCapableIf smoothCapable is set to true, any reflected entity maintained by this list will use a smoother.
DtReflectedEntityList::DtReflectedEntityList ( DtExerciseConn exConn,
const DtList handleList,
const DtString updateRateTag,
bool  smoothCapable = false,
const DtDDMRegionSet regionSetToUse = 0 
)
virtual DtReflectedEntityList::~DtReflectedEntityList ( )
virtual

Destructor.

DtReflectedEntityList::DtReflectedEntityList ( const DtReflectedEntityList orig)
private

Copy constructor – not implemented.

Member Function Documentation

virtual void DtReflectedEntityList::addEntityAdditionCallback ( DtEntityCallbackFunction  cb,
void *  userData 
)
virtual

Entity added callback registration.

Allows the user to specify a function to be called when an entity is discovered and added to the list.

virtual void DtReflectedEntityList::addEntityRemovalCallback ( DtEntityCallbackFunction  cb,
void *  userData 
)
virtual

Entity removed callback registration.

Allows the user to specify a function to be called when and entity is removed from the list.

virtual void DtReflectedEntityList::addToEntityIdentifierHashList ( DtReflectedEntity ent)
virtual

Adds the entity id of ent to myEntityIdentifierHashlist.

This is called by checkEntityId, and needs to be public so that it can be called by the callback.

virtual void DtReflectedEntityList::addToObjectList ( DtReflectedObject refObj)
virtual

Adds an object the the list.

Override DtReflectedObjectList::addToObjectList() (which it calls down to) to add entities to the entity identifier hash list

Reimplemented from DtReflectedObjectList.

static void DtReflectedEntityList::checkEntityId ( DtReflectedEntity ent,
void *  usr 
)
staticprotected

Callback which checks whether the entity id of the entity has arrived yet.

If it has, the entity id is added to myEntityIdentifierHashlist to be used for lookup purposes, and the callback is deregistered. Registered addToObjectList().

static bool DtReflectedEntityList::checkEntityType ( DtReflectedObject obj,
void *  usr 
)
staticprotected

Callback which checks whether the entity type has arrived yet.

This callback is registered/deregistered using the function: discoverOnlyWhenEntityTypeKnown()

static bool DtReflectedEntityList::delayDiGuyObjectDiscoveryCondition ( DtReflectedObject beam,
void *  usr 
)
staticprotected

The following discovery condition function gets set for DiGuyObjects when users register a discovery condition for either DtReflectedEmitterSystemList or its beam list.

Calls DtReflectedEmitterSystem::delayBeamDiscovery()

virtual const DtList* DtReflectedEntityList::dfltHandleList ( )
protectedvirtual

Returns the list of handles that the FOM Mapper associates with a DtReflectedEntityList.

Uses the FOM Mapper of the DtExerciseConn that is passed in through the constructor.

static void DtReflectedEntityList::diGuyObjectAdditionCb ( DtReflectedDIGuyObject beam,
void *  usr 
)
staticprotected

Callback functions registered with the reflected DIGuyObject list on DIGuyObject additions, updates, and removals.

Calls processDiGuyObjectAddition/Update/Removal.

static void DtReflectedEntityList::diGuyObjectRemovalCb ( DtReflectedDIGuyObject beam,
void *  usr 
)
staticprotected
static void DtReflectedEntityList::diGuyObjectUpdateCb ( DtReflectedDIGuyObject beam,
void *  usr 
)
staticprotected
virtual void DtReflectedEntityList::discoverOnlyWhenEntityTypeKnown ( bool  yesNo)
virtual

Allows one to specify whether discover should delayed until the entity type is known before adding the entity to the list.

The default value is no, meaning entities will get added to the list immediately – regardless of whether it has received any attr values or not.

virtual void DtReflectedEntityList::entityAdded ( DtReflectedEntity ent)
protectedvirtual

Called by objectAdded (which is called from processDiscoverObject()) after a remote entity has been added to the list.

Default implementation prints a message. Subclasses can override this function to add functionality on entity addition.

virtual DtReflectedEntity* DtReflectedEntityList::first ( ) const
virtual

Get the first entity in the list.

Returns
The first reflected entity in the list if there is one, and NULL otherwise.
virtual void DtReflectedEntityList::initializeDIGuy ( )
protectedvirtual

Initialize the DIGuyObject reflected list and callbacks Checks if "DIGuyObject" class is in FOM.

virtual DtReflectedEntity* DtReflectedEntityList::last ( ) const
virtual

Get the last entity in the list.

Returns
The last reflected entity in the list if there is one, and NULL otherwise.
virtual DtReflectedEntity* DtReflectedEntityList::lookup ( RTI::ObjectInstanceHandle  id)
virtual

Look up entity by object handle.

Returns
The reflected entity if it is on the list, and NULL otherwise.
virtual DtReflectedEntity* DtReflectedEntityList::lookup ( const DtGlobalObjectDesignator objName)
virtual

Look up entity by name.

Returns
The reflected entity if found, and NULL if not found.
virtual DtReflectedEntity* DtReflectedEntityList::lookup ( const DtEntityIdentifier entityId)
virtual

Look up entity by entityId.

Returns
The reflected entity if found, and NULL if not found.
virtual DtReflectedEntity* DtReflectedEntityList::newReflectedEntity ( DtHlaObject obj) const
protectedvirtual

Create a remote entity object for the HLA object.

Caller is responsible for deletion.

virtual DtReflectedObject* DtReflectedEntityList::newReflectedObject ( DtHlaObject obj) const
protectedvirtual

Override of the virtual function in DtReflectedObjectList.

newReflectedObject calls newReflectedEntity.

Implements DtReflectedObjectList.

virtual void DtReflectedEntityList::objectAdded ( DtReflectedObject obj)
protectedvirtual

Called from processDiscoverObject() after a remote entity has been added to the list.

Calls entityAdded.

Reimplemented from DtReflectedObjectList.

DtReflectedEntityList& DtReflectedEntityList::operator= ( const DtReflectedEntityList orig)
private

Assignment operator – not implemented.

virtual void DtReflectedEntityList::processDiGuyObjectAddition ( DtReflectedDIGuyObject beam)
protectedvirtual

Called by similar callback functions registered with reflected DIGuyObject list on additions/removals/updates.

Addition function adds the object to the set of orphan objects (since we don't know what entity it's part of), the removal function removes the object's SR from his entity's SR. Update function calls the entity's update callbacks.

virtual void DtReflectedEntityList::processDiGuyObjectRemoval ( DtReflectedDIGuyObject beam)
protectedvirtual
virtual void DtReflectedEntityList::processDiGuyObjectUpdate ( DtReflectedDIGuyObject beam)
protectedvirtual
virtual void DtReflectedEntityList::removeAndDelete ( DtReflectedObject object,
char *  msg 
)
protectedvirtual

Override of the virtual function in DtReflectedObjectList.

Calls removeAndDelete(DtReflectedEntity*....)

Reimplemented from DtReflectedObjectList.

virtual void DtReflectedEntityList::removeAndDelete ( DtReflectedEntity entity,
char *  msg = NULL 
)
protectedvirtual

Default calls down to base class version, but can be overridden.

Parameters
msgIf msg is specified, msg is printed to DtInfo with the object handle of the object deleted
virtual void DtReflectedEntityList::removeEntityAdditionCallback ( DtEntityCallbackFunction  cb,
void *  userData 
)
virtual

Entity added callback deregistration.

Allows the user to remove the callback function that is called when an entity is discovered and added to the list.

virtual void DtReflectedEntityList::removeEntityRemovalCallback ( DtEntityCallbackFunction  cb,
void *  userData 
)
virtual

Entity removed callback deregistration.

Allows the user to remove the callback function that is called when an entity is removed from the list.

virtual void DtReflectedEntityList::resolveOrphans ( )
protectedvirtual

Check if any orphanBeams have non-NULL emittingSystemId.

If so, add them to their appropriate system (creating one if it doesn't exist), and delete them from orphan list.

static void DtReflectedEntityList::resolveOrphansPostDrainCb ( void *  usr)
staticprotected

Callback that calls resolveOrphans.

Member Data Documentation

DtHashlist DtReflectedEntityList::myEntityIdentifierHashlist
protected

Hash list used for lookup of entity identifiers.

std::set<DtReflectedDIGuyObject*> DtReflectedEntityList::myOrphanDiGuyObjects
protected
DtReflectedDIGuyObjectList* DtReflectedEntityList::myReflectedDiGuyObjects
protected
bool DtReflectedEntityList::mySmoothCapable
protected

Determines whether to use smoothing for reflected entities.


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

Document ID: Generated on Tue Feb 2 21:02:17 EST 2021 from SVN revision 223668
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)