28 #include <vlutil/vlFedTarget.h>
34 #define DtHlaNamePrefix "HLA_"
54 class DtRegionEntryListWithAttributes;
89 typedef std::map<DtObjectInstanceHandle, DtAttributeHandleSet>
97 typedef std::list< std::pair< DtObjectInstanceHandle, std::pair<MAKRti::DtTransportType, DtAttributeHandleSet>>>
DtPendingConfirmTransport;
99 typedef std::map<DtObjectInstanceHandle, DtRtiApiTime const *> DtObjectHandleTimeMap;
100 typedef std::map<DtRtiObject*, DtRtiApiTime const *> DtObjectPtrTimeMap;
124 virtual void postJoinInit();
127 virtual bool isPostJoined()
const;
150 inline DtTimeMgr* timeMgr() {
return federateMgr()->timeMgr();}
152 inline DtTimeMgr* timeMgr()
const {
return federateMgr()->timeMgr();}
156 virtual bool useHlaNamePrefix();
175 virtual void publish(
180 virtual void unpublishClass(
184 virtual void unpublishAttributes(
190 virtual void unpublishAttributes(
193 bool implicitlyUnpublishPrivilegeToDelete);
207 virtual void subscribe(
211 #
if defined(DtIFSPEC13) || defined(DtIFSPEC1516)
214 , MAKRti::DtString updateRateDesignator);
218 virtual void unsubscribeClass(
222 virtual void unsubscribeAttributes(
227 virtual void unsubscribeAttributes(
242 #if !defined(DtIFSPEC13) && !defined(DtIFSPEC1516)
243 virtual void reserveMultipleObjectInstanceName(
245 std::set<std::wstring>
const & theObjectInstanceNames);
250 virtual void reserveObjectInstanceName(
251 std::string
const & theObjectInstanceName);
256 #
if defined(DtIFSPEC13)
259 std::string
const & theObjectInstanceName);
262 #if !defined(DtIFSPEC13) && !defined(DtIFSPEC1516)
263 virtual void releaseObjectInstanceName(
265 std::string
const & theObjectInstanceName)
266 throw (RTI_API::ObjectInstanceNameNotReserved);
267 virtual void releaseMultipleObjectInstanceNames(
268 std::set< std::wstring >
const & theObjectInstanceNames )
269 throw (RTI_API::ObjectInstanceNameNotReserved);
270 virtual void queryAttributeTransportationType(
273 virtual void queryInteractionTransportationType(
287 #if !defined(DtIFSPEC13) && !defined(DtIFSPEC1516)
293 virtual unsigned long deleteObj(
302 virtual void requestObjectUpdate(
308 virtual void requestClassUpdate(
317 virtual unsigned long sendUpdate(
325 virtual unsigned long sendUpdate(
332 virtual void acquireAttrs(
339 virtual void cancelAcquire(
344 virtual void divestOwnership(
348 #
if !defined(DtIFSPEC13)
353 #if !defined(DtIFSPEC13)
354 virtual void confirmDivestiture (
362 virtual void cancelDivest(
390 virtual const DtRtiObject* knownObj(
const char* name)
const;
410 virtual DtRtiObject* lrcManagedObj(
const char* name);
414 virtual void removeFromAllLists(
DtRtiObject*
object);
418 #if !defined(DtIFSPEC1516_2025)
426 virtual bool isAcquistionPending();
432 virtual int evaluateSubscription(
DtRtiMsg const& msg);
435 virtual void autoProvideAttrValueUpdate();
455 virtual void sendRequestMsg(
464 virtual void addPendingStartUpdates(
469 virtual void addPendingStopUpdates(
502 bool isNonDiscovery);
505 virtual void processResign(
const DtResignMsg& msg);
515 virtual void preTick();
518 virtual void postTick();
523 virtual void setRestoreInProgress(
bool isRestore);
525 virtual bool restoreInProgress()
const;
529 virtual void enableClassRelevanceSwitch();
532 virtual void disableClassRelevanceSwitch();
537 virtual void setClassRelevanceSwitch(
bool enableSwitch);
538 virtual bool classRelevanceSwitch()
const;
542 virtual void enableAttributeRelevanceSwitch();
545 virtual void disableAttributeRelevanceSwitch();
550 virtual void setAttributeRelevanceSwitch(
bool enableSwitch);
551 virtual bool attributeRelevanceSwitch()
const;
555 virtual void enableAttributeScopeSwitch();
558 virtual void disableAttributeScopeSwitch();
563 virtual void setAttributeScopeSwitch(
bool enableSwitch);
564 virtual bool attributeScopeSwitch()
const;
580 MAKRti::DtString& objectName);
603 virtual void getObjectsOwned(DtMomTallyList& list)
const;
605 virtual void getObjectsReflected(DtMomTallyList& list)
const;
606 virtual void getObjectsUpdated(DtMomTallyList& list)
const;
611 virtual int numObjectsOwned();
614 virtual void setDefaultClassAttributeTransportationType(
DtObjectClassHandle theObjectClass,
638 virtual void registerAssociateRegionForUpdates(
DtRtiObject&
object,
641 #if defined(DtIFSPEC13)
646 DtRegion13 *regions[],
647 unsigned long numberOfHandles,
648 const char *objectName=NULL) {
return 0; }
651 virtual void associateRegionForUpdates(
657 virtual void unassociateRegionForUpdates(
661 virtual void subscribeObjectClassAttributesWithRegion(
668 virtual void unsubscribeObjectClassWithRegion(
672 virtual void requestClassAttributeValueUpdateWithRegion (
675 const DtRegion &theRegion) {}
681 const char * theObjectInstanceName=NULL) {
return 0;}
684 virtual void associateRegionsForUpdates (
689 virtual void unassociateRegionsForUpdates (
694 virtual void subscribeObjectClassAttributesWithRegions (
697 #
if !defined(DtIFSPEC1516)
698 , MAKRti::DtString updateRateDesignator
703 virtual void unsubscribeObjectClassAttributesWithRegions (
708 virtual void requestAttributeValueUpdateWithRegions (
719 virtual void checkPendingTsoRemoveObject();
733 virtual void prepareToRestore();
740 virtual void sendNotDiscoveredMsgForSmartForwarding(
745 virtual void sendNotDiscoveredMsgForSmartForwarding(
760 static void setCreatorFunction(DtObjectMgrCreator creator);
766 static void setInternalCreatorFunction(DtObjectMgrCreator fn);
780 virtual void provideAttrValueUpdate(
const DtRtiObject* obj,
786 virtual void remoteSubscribe(
793 virtual void remotePassiveSubscribe(
801 virtual void remoteUnsubscribe(
808 virtual void setDiscoveredClass(
DtRtiObject&
object,
812 virtual void processUpdate(
const DtUpdateMsg& msg);
816 #if !defined(DtIFSPEC13) && !defined (DtIFSPEC1516)
821 virtual void processRegister(
const DtRegObjMsg& msg);
827 virtual void processDeleteTso(
const DtDeleteTsoMsg& msg);
829 virtual void processLocDelete(
const DtLocDelMsg& msg);
839 virtual void processAcquire(
845 virtual void processCancelAcquire(
851 virtual void processConfirmCancelAcquire(
871 virtual void processNotifyAcquire(
875 bool forceAcquire=
false);
878 virtual void processNotifyAcquireForDirectedMessaging(
886 const char* objectName,
901 virtual void sendSubscribeMsg(
DtObjectClassHandle theObj,
bool isPassive,
bool replacement,
903 virtual void sendSubscribeMsg(
DtObjectClassHandle theObj,
bool isPassive,
bool replacement,
914 virtual void sendReserveNameMsg(std::string
const & theObjectInstanceName);
917 unsigned int offset=0);
927 #if !defined(DtIFSPEC13) && !defined(DtIFSPEC1516)
929 DtTransportType transType);
937 virtual void sendPendingStartUpdates();
940 virtual void sendPendingStopUpdates();
943 virtual void sendPendingStartReg();
946 virtual void sendPendingStopReg();
949 virtual void sendPendingRegister();
952 virtual void sendPendingSubscription();
955 virtual void sendPendingRemovals();
958 virtual void sendPendingRequestAttributes();
961 virtual void sendPendingDiscoveries();
964 virtual void invokePendingDivestNotification();
967 virtual void invokePendingConfirmTransportChange();
970 virtual void purgeDeletedObjects();
972 #if !defined(DtIFSPEC13)
973 virtual void resetNameReservation(std::string objectName);
977 virtual void resetNameUsed(std::string objectName);
982 virtual void throwIfAcquisitionPending(
986 #if !defined(DtIFSPEC13)
987 virtual void confirmAllInstancesPendingDivestitures(
995 virtual void confirmPendingDivestitures(
1003 virtual void cancelPendingConfirms(
1010 virtual void divestAllInstances(
1016 virtual void divestAllInstances();
1020 virtual void releaseAllAttributes(
DtRtiObject*
object);
1024 virtual void releaseOwnership(
1029 virtual void sendUpdateMessage(
DtUpdateMsg* update,
1031 MAKRti::DtTransportType trans,
unsigned int numberAttrs,
1032 MAKRti::DtInetAddr destAddr = DtInetAddr::inaddrAny(),
1033 unsigned int offset = 0);
1037 virtual void incrementUpdateTally(
DtHandle objectClass);
1039 virtual void incrementSentAttributesTally(
DtHandle objectClass,
1040 MAKRti::DtTransportType transport,
unsigned int numberAttrs);
1041 virtual void incrementReceivedTally(
DtHandle objectClass,
1042 MAKRti::DtTransportType transport,
unsigned int numberAttrs);
1047 virtual void deleteAllOwnedObjects();
1050 virtual void deleteObj(
DtRtiObject* obj,
bool isLocalDelete=
false);
1067 virtual void removeObjectAssociations(
DtRtiObject&
object);
1072 virtual void collectRemoteSubscriptions(
DtRtiObject&
object);
1087 virtual unsigned long nextOffsetId();
1116 const char* objName,
1121 bool federateOwnsPrivilegeToDelete);
1130 #if defined(DtIFSPEC13)
1131 virtual void calculateRegionSet(
unsigned long channel,
const DtAhvps& reflectSet) {}
1145 virtual void acquireAssociateRegionForUpdates(
1150 virtual void unassociateRegionForDivested(
1166 #if defined(DtIFSPEC13)
1169 DtAhvps const& reflectedValues,
1172 char const * tag = 0,
1174 unsigned long serialNumber = 0);
1177 RTI_API::ObjectInstanceHandle objectHandle,
1184 unsigned long serialNumber = 0,
1190 virtual bool acceptObjectChannel(
unsigned long channel);
1194 virtual bool acceptRequestChannel(
unsigned long channel);
1203 virtual void removeClassMulticast(
DtObjectClassInfo* classDesc,
float rate=-1.0);
1217 #if defined(DtIFSPEC1516_2025)
1238 virtual void destroyObjectLists();
1241 virtual unsigned long savePacketLength();
1250 static void processUpdate(
const DtUpdateMsg& msg,
void* usr);
1254 #if !defined(DtIFSPEC13) && !defined(DtIFSPEC1516)
1259 static void processRegister(
const DtRegObjMsg& msg,
void* usr);
1261 static void processDiscover(
const DtDiscObjMsg& msg,
void* usr);
1262 static void processRequestDiscover(
const DtReqDiscObjMsg& msg,
void* usr);
1263 static void processDelete(
const DtDeleteRoMsg& msg,
void* usr);
1265 static void processDeleteTso(
const DtDeleteTsoMsg& msg,
void* usr);
1267 static void processLocDelete(
const DtLocDelMsg& msg,
void* usr);
1268 static void processPub(
const DtPubObjMsg& msg,
void* usr);
1269 static void processUnpub(
const DtUnpubObjMsg& msg,
void* usr);
1270 static void processSub(
const DtSubObjMsg& msg,
void* usr);
1271 static void processUnsub(
const DtUnsubObjMsg& msg,
void* usr);
1272 static void processRequest(
const DtRequestMsg& msg,
void* usr);
1273 static void processOwnership(
const DtOwnershipMsg& msg,
void* usr);
1326 DtObjectHandleTimeMap myTsoDeletedObjects;
1327 DtObjectPtrTimeMap myTsoDeletedObjectCache;
1328 DtObjectPtrTimeMap myTsoRemovedObjectCache;
1349 #if !defined(DtIFSPEC13) && !defined(DtIFSPEC1516)
1359 bool myClassRelevanceSwitch;
std::set< std::string > myReservedNames
These names are reserved by this federate but have not been used.
Definition: objMgr.h:1282
Definition: aHandValBase.h:21
std::map< MAKRti::DtString, DtRtiObject * > myKnownObjsByName
List of known objects by name.
Definition: objMgr.h:1301
bool myForceBestEffort
Send everything best effort.
Definition: objMgr.h:1392
DtFederateMgr * federateMgr() const
Definition: objMgr.h:131
bool myIsJoined
Manager has performed join processing.
Definition: objMgr.h:1366
OrderType
Definition: datatypes.pb.h:472
bool myRestoreInProgress
Status of restore.
Definition: objMgr.h:1369
static const DtRtiApiVariableLengthData theDefaultTag
Definition: rtiMsg.h:246
DtFederateToPendingObjDiscMap myPendingDiscoveries
Definition: objMgr.h:1380
Definition: reqDiscObjMsg.h:23
Sorted list for queueing messages in time stamped order.
Definition: msgQueue.h:71
DtPendingRequestAttrMap myRequestedAttributeAssumptions
Post processing lists.
Definition: objMgr.h:1347
std::list< std::pair< DtObjectClassHandle, DtAttributeHandleSet > > DtObjClassAttrSetPairList
Definition: objMgr.h:95
DtObjectClassHandleStdSet myPendingStopRegList
Post processing lists.
Definition: objMgr.h:1340
std::set< DtRtiMsgKind > myConstrainedUpdateKinds
Definition: objMgr.h:1394
This class manages the RTI's start-up configuration using both MTL variables and functions.
Definition: RIDparams.h:87
MAKRti::DtClock myClock
Clock for timing.
Definition: objMgr.h:1375
RTI_API::TransportationTypeHandle DtRtiApiTransportationType
Definition: rtiApiTypes.h:114
bool myReuseIds
Unique object IDs have been exhausted, attempt to reuse IDs.
Definition: objMgr.h:1372
DtObjectClassHandleStdSet myPendingRegisterList
Post processing lists.
Definition: objMgr.h:1341
Definition: nameReservedMsg.h:25
bool myAttributeRelevanceSwitch
Advisory switches.
Definition: objMgr.h:1361
DtRtiApiVariableLengthData const * DtRtiApiTagConstPtr
Definition: rtiApiTypes.h:99
Definition: ownerMsg.h:45
This file contains the declaration of the Connection Manager.
DtObjectInstanceHandleStdSet myLocalDeletedObjects
Post processing lists.
Definition: objMgr.h:1336
DtRequestType
Definition: reqObjMsg.h:24
DtRtiObjectMap myKnownObjs
List of known objects by handle.
Definition: objMgr.h:1298
DtPendingRequestAttrMap myPendingDivestNotifications
Post processing lists.
Definition: objMgr.h:1346
Definition: discObjMsg.h:23
Definition: resignMsg.h:36
RTI_API::LogicalTime DtRtiApiTime
Typedefs for RTI API types that frequently require conditional precompile directives.
Definition: rtiApiTypes.h:91
DtHandle DtObjectClassHandle
Definition: internalTypes.h:48
DtObjInstAttrSetPairList myPendingStartUpdatesList
Post processing lists.
Definition: objMgr.h:1337
std::map< DtFederateHandle, DtClassToPendingObjDiscMap > DtFederateToPendingObjDiscMap
Definition: objMgr.h:1379
DtFederateMgr * myFederateMgr
Access to the federate manager.
Definition: objMgr.h:1279
DtUpdateType
Update type for object.
Definition: rtiObject.h:94
DtHandle DtInteractionClassHandle
Definition: internalTypes.h:52
std::vector< AttributeHandleSetRegionHandleSetPair > AttributeHandleSetRegionHandleSetPairVector
Definition: Typedefs.h:52
bool myAttributeScopeSwitch
Advisory switches.
Definition: objMgr.h:1362
DtRtiApiVariableLengthData const & DtRtiApiTagConstRef
Definition: rtiApiTypes.h:98
virtual void removeObjectInstance(ObjectHandle theObject, const FedTime &theTime, const char *theTag, EventRetractionHandle theHandle)=0
6.9
static unsigned long theDefaultRegionSetHandle
Definition: rtiMsg.h:244
Definition: reserveNameMsg.h:25
static DtObjectMgrCreator theInternalCreator
The internal creator.
Definition: objMgr.h:1407
std::list< std::pair< DtObjectInstanceHandle, DtAttributeHandleSet > > DtObjInstAttrSetPairList
Definition: objMgr.h:96
DtObjectClassMaskMap myPendingNonDiscoveriesMaskList
Definition: objMgr.h:1383
Instances of DtFederateMgr process federation-level messages (such as create, destroy, join, resign, and sync points) and manages the objects responsible for handling general communication, objects, interactions, the FOM, MOM, and data distribution mmg.
Definition: fedMgr.h:93
DtObjectClassMaskMap myPendingDiscoveriesMaskList
Definition: objMgr.h:1381
Defines the internal representation of attribute/parameter handle sets.
Definition: attrHandSet.h:30
std::map< DtObjectClassHandle, DtObjectInstanceHandleStdSet > DtClassToPendingObjDiscMap
Pending discoveries and non-discoveries.
Definition: objMgr.h:1378
DtFederateMgr * federateMgr()
Access to the federate manager.
Definition: objMgr.h:130
Instances of DtConnectionMgr manage the communication objects that the RTI will use to either communi...
Definition: connectMgr.h:67
Definition: multiNameReservedMsg.h:25
DtRtiMsg is the base class for messages between RTI components.
Definition: rtiMsg.h:34
DtHandle DtFederateHandle
Definition: internalTypes.h:46
DtHandle DtObjectInstanceHandle
Definition: internalTypes.h:50
The RTI object maintains the internal RTI object state.
Definition: rtiObject.h:123
std::map< MAKRti::DtString, DtRtiObject * > myObjectsByName
List of all objects by name.
Definition: objMgr.h:1295
DtHandle DtTransportHandle
Definition: internalTypes.h:59
DtObjectClassHandleStdSet myPendingStartRegList
Post processing lists.
Definition: objMgr.h:1339
DtPendingConfirmTransport myPendingConfirmTransportChange
Post processing lists.
Definition: objMgr.h:1350
Definition: releaseMultiNameMsg.h:25
std::map< DtObjectInstanceHandle, DtBitMask * > DtObjectInstanceMaskMap
Definition: objMgr.h:94
Definition: queryTransportMsg.h:30
DtDivestCondition
The type of divestiture.
Definition: objMgr.h:67
const int myShiftForFederateHandle
Definition: objMgr.h:1398
DtPendingRequestAttrMap myPendingOwnershipRequest
Post processing lists.
Definition: objMgr.h:1348
Definition: subObjMsg.h:23
std::map< DtObjectInstanceHandle, MAKRti::DtTime > myDeletedObjects
Set of objects that have been recently deleted that will not be discovered via update.
Definition: objMgr.h:1320
MAKRti::DtString myHlaNamePrefix
The HLA object instance name prefix.
Definition: objMgr.h:1289
DtHandle myFreeObjHandle
The next free object handle.
Definition: objMgr.h:1356
std::set< std::string > myFailedNames
Reservation of these names failed (i.e., reserved by another federate).
Definition: objMgr.h:1286
DtRtiObjectMap myObjects
List of all objects by handle.
Definition: objMgr.h:1292
static DtObjectMgrCreator theCreator
The plugin creator.
Definition: objMgr.h:1404
std::map< AttributeHandle, VariableLengthData > AttributeHandleValueMap
Definition: Typedefs.h:39
DtObjectInstanceHandleStdSet myPendingInstRegisterList
Post processing lists.
Definition: objMgr.h:1343
Definition: reserveMultiNameMsg.h:25
The object manager class processes the object management services.
Definition: objMgr.h:81
std::map< MAKRti::DtString, DtRtiObject * > myLrcManagedObjsByName
List of LRC owned objects by name.
Definition: objMgr.h:1313
Maintain mappings between handles and network addresses The mappings are assumed to be propogated thr...
Definition: addrMap.h:26
ResignAction
Definition: datatypes.pb.h:305
Definition: regObjMsg.h:25
std::set< DtObjectClassHandle > DtObjectClassHandleStdSet
Definition: internalTypes.h:49
DtConnectionMgr * connectMgr()
Returns pointer to network connection mgr.
Definition: objMgr.h:134
Definition: internalTypes.h:84
std::list< std::pair< DtObjectInstanceHandle, std::pair< MAKRti::DtTransportType, DtAttributeHandleSet > > > DtPendingConfirmTransport
Definition: objMgr.h:97
MAKRti::DtList myPendingRemovals
Post processing lists.
Definition: objMgr.h:1344
unsigned long DtHandle
The internal types.
Definition: internalTypes.h:41
DtHandle DtAttributeHandle
Definition: internalTypes.h:54
DtObjClassAttrSetPairList myPendingStopUpdatesList
Post processing lists.
Definition: objMgr.h:1338
std::map< DtObjectInstanceHandle, DtAttributeHandleSet > DtPendingRequestAttrMap
Map of requested attributes.
Definition: objMgr.h:90
The declaration of the RTI object class.
DtTime myNextPendingDiscTime
Next time we should send pending discovery messages.
Definition: objMgr.h:1386
DtAddrMap myAddrMap
Map of routing addresses by region set handle.
Definition: objMgr.h:1316
Definition: aHandValSet.h:33
std::set< DtInteractionClassHandle > DtInteractionClassHandleStdSet
Definition: internalTypes.h:53
DtRtiObjectMap myLrcManagedObjs
List of LRC owned objects by handle.
Definition: objMgr.h:1310
DtOwnerMsgKind
Definition: ownerMsg.h:24
DtObjectClassMaskMap myPendingRegisterMaskList
Post processing lists.
Definition: objMgr.h:1342
DtBitMask represents a variable length bit-field which may be used to represent an array of boolean d...
Definition: bitMask.h:24
#define DT_DLL_LRC
Definition: rtiMsConfig.h:155
Definition: unpubObjMsg.h:23
DtPendingRequestAttrMap myPendingRequestAttrs
Post processing lists.
Definition: objMgr.h:1345
Definition: saveFile.h:21
DtObjectInstanceHandleStdSet myIgnoreObjects
Set of object handles whose next updates should be ignored.
Definition: objMgr.h:1389
DtRIDParameters * params() const
Return pointer to RID parameters.
Definition: objMgr.h:140
std::set< DtRtiMsgKind > myConstrainedDeleteKinds
Definition: objMgr.h:1395
Definition: updateMsg.h:28
Definition: multiRegObjMsg.h:21
Definition: unsubObjMsg.h:24
Definition: objClassInfo.h:36
Definition: locDelMsg.h:28
DtObjectClassMaskMap myRetransmitSubClassMask
Post processing lists.
Definition: objMgr.h:1335
Message for sending receive order delete.
Definition: deleteRoMsg.h:23
const long DtDefaultRegionSetHandle
Definition: RIDparams.h:31
std::set< std::string > myUsedNames
These names have been used by this federate to register an object instance.
Definition: objMgr.h:1284
DtConnectionMgr * connectMgr() const
Definition: objMgr.h:135
Definition: pubObjMsg.h:24
std::map< MAKRti::DtString, DtRtiObject * > myOwnedObjsByName
List of owned objects by name.
Definition: objMgr.h:1307
std::map< DtObjectClassHandle, DtBitMask * > DtObjectClassMaskMap
Definition: objMgr.h:93
Definition: reqObjMsg.h:31
std::set< DtObjectInstanceHandle > DtObjectInstanceHandleStdSet
Definition: internalTypes.h:51
std::map< DtHandle, DtRtiObject * > DtRtiObjectMap
Definition: objMgr.h:74
This file contains the declaration of the base federation manager.
DtFomClassMgr * fom() const
Return fom pointer.
Definition: objMgr.h:146
DtHandle DtOrderHandle
Definition: internalTypes.h:58
DtRtiObjectMap myOwnedObjs
List of owned objects by handle.
Definition: objMgr.h:1304
DtFederateToPendingObjDiscMap myPendingNonDiscoveries
Definition: objMgr.h:1382
std::set< RegionHandle > RegionHandleSet
Definition: Typedefs.h:34
Definition: queryInterTransportMsg.h:24