19 #include <vlutil/vlHashlist.h>
20 #include <vlutil/vlFedTarget.h>
28 #if defined(DtIFSPEC1516) || defined(DtIFSPEC1516E)
29 #include <RTI/Enums.h>
40 #define DtHlaNamePrefix "HLA_"
43 class DtReserveNameMsg;
44 class DtNameReservedMsg;
59 class DtRegionEntryListWithAttributes;
95 typedef std::map<DtObjectInstanceHandle, DtAttributeHandleSet>
105 typedef std::map<DtObjectInstanceHandle, rti1516::LogicalTime const *> DtObjectHandleTimeMap;
106 typedef std::map<DtRtiObject*, rti1516::LogicalTime const *> DtObjectPtrTimeMap;
107 #elif defined(DtIFSPEC1516E)
108 typedef std::map<DtObjectInstanceHandle, rti1516e::LogicalTime const *> DtObjectHandleTimeMap;
109 typedef std::map<DtRtiObject*, rti1516e::LogicalTime const *> DtObjectPtrTimeMap;
111 typedef std::map<DtObjectInstanceHandle, RTI::FedTime const *> DtObjectHandleTimeMap;
112 typedef std::map<DtRtiObject*, RTI::FedTime const *> DtObjectPtrTimeMap;
137 virtual void postJoinInit();
140 virtual bool isPostJoined()
const;
164 virtual DtTimeMgr* timeMgr();
165 virtual DtTimeMgr* timeMgr()
const;
169 virtual bool useHlaNamePrefix();
188 virtual void publish(
193 virtual void unpublishClass(
197 virtual void unpublishAttributes(
203 virtual void unpublishAttributes(
206 bool implicitlyUnpublishPrivilegeToDelete);
209 virtual void subscribe(
216 virtual void subscribe(
220 MAKRti::DtString updateRateDesignator);
224 virtual void unsubscribeClass(
228 virtual void unsubscribeAttributes(
233 virtual void unsubscribeAttributes(
239 virtual void reserveMultipleObjectInstanceName(
240 std::set<std::wstring>
const & theObjectInstanceNames);
243 #if defined(DtIFSPEC1516) || defined(DtIFSPEC1516E)
245 virtual void reserveObjectInstanceName (
246 std::string
const & theObjectInstanceName);
251 std::string
const & theObjectInstanceName);
262 virtual void releaseObjectInstanceName(
263 std::string
const & theObjectInstanceName);
264 virtual void releaseMultipleObjectInstanceNames(
265 std::set< std::wstring >
const & theObjectInstanceNames );
266 virtual void queryAttributeTransportationType(
269 virtual void queryInteractionTransportationType(
289 virtual unsigned long deleteObj(
293 #elif defined(DtIFSPEC1516E)
296 virtual unsigned long deleteObj(
303 virtual unsigned long deleteObj(
306 char const * theTag);
314 virtual void requestObjectUpdate (
318 #elif defined(DtIFSPEC1516E)
319 virtual void requestObjectUpdate (
324 virtual void requestObjectUpdate (
332 virtual void requestClassUpdate (
337 #elif defined(DtIFSPEC1516E)
338 virtual void requestClassUpdate (
344 virtual void requestClassUpdate (
355 virtual unsigned long sendUpdate(
357 const DtAhvps& theAttrs,
360 #elif defined(DtIFSPEC1516E)
361 virtual unsigned long sendUpdate(
363 const DtAhvps& theAttrs,
367 virtual unsigned long sendUpdate(
369 const DtAhvps& theAttrs,
377 virtual unsigned long sendUpdate(
379 const DtAhvps& theAttrs,
382 #elif defined(DtIFSPEC1516E)
383 virtual unsigned long sendUpdate(
385 const DtAhvps& theAttrs,
389 virtual unsigned long sendUpdate(
391 const DtAhvps& theAttrs,
398 virtual void acquireAttrs(
403 #elif defined(DtIFSPEC1516E)
404 virtual void acquireAttrs(
410 virtual void acquireAttrs(
418 virtual void cancelAcquire(
424 virtual void divestOwnership(
432 virtual void confirmDivestiture (
437 #elif defined(DtIFSPEC1516E)
439 virtual void divestOwnership(
447 virtual void confirmDivestiture (
454 virtual void divestOwnership(
462 virtual void cancelDivest(
476 virtual const MAKRti::DtList& allObjects()
const;
486 virtual const MAKRti::DtList& knownObjects()
const;
496 virtual const MAKRti::DtList& ownedObjects()
const;
506 virtual const MAKRti::DtList& lrcManagedObjects()
const;
508 virtual DtRtiObject* lrcManagedObj(
const char* name);
512 virtual void removeFromAllLists(
DtRtiObject*
object);
515 virtual void queryOwnership(
519 virtual bool isAcquistionPending();
522 virtual void autoProvideAttrValueUpdate();
537 virtual void sendRequestMsg(
543 #elif defined(DtIFSPEC1516E)
546 virtual void sendRequestMsg(
555 virtual void addPendingStartUpdates(
560 virtual void addPendingStopUpdates(
593 bool isNonDiscovery);
596 virtual void processResign(
const DtResignMsg& msg);
604 #elif defined(DtIFSPEC1516E)
614 virtual void preTick();
617 virtual void postTick();
623 virtual void setRestoreInProgress(
bool isRestore);
624 virtual bool restoreInProgress()
const;
630 virtual void enableClassRelevanceSwitch();
631 virtual void disableClassRelevanceSwitch();
635 virtual void setClassRelevanceSwitch(
bool enableSwitch);
636 virtual bool classRelevanceSwitch();
641 virtual void enableAttributeRelevanceSwitch();
642 virtual void disableAttributeRelevanceSwitch();
646 virtual void setAttributeRelevanceSwitch(
bool enableSwitch);
647 virtual bool attributeRelevanceSwitch();
652 virtual void enableAttributeScopeSwitch();
653 virtual void disableAttributeScopeSwitch();
657 virtual void setAttributeScopeSwitch(
bool enableSwitch);
658 virtual bool attributeScopeSwitch();
673 MAKRti::DtString& objectName);
697 virtual void getObjectsOwned(DtMomTallyList& list);
698 virtual void getObjectsReflected(DtMomTallyList& list);
699 virtual void getObjectsUpdated(DtMomTallyList& list);
704 virtual int numObjectsOwned();
709 MAKRti::DtTransportType theType);
725 virtual void registerAssociateRegionForUpdates(
DtRtiObject&
object,
733 theAttributeRegionPairs,
734 const char * theObjectInstanceName=
NULL) {
return 0;}
737 virtual void associateRegionsForUpdates (
740 theAttributeRegionPairs) {}
743 virtual void unassociateRegionsForUpdates (
746 theAttributeRegionPairs) {}
749 virtual void subscribeObjectClassAttributesWithRegions (
752 theAttributeRegionPairs,
756 virtual void unsubscribeObjectClassAttributesWithRegions (
759 theAttributeHandleSetRegionHandleSetPairVector) {}
762 virtual void requestAttributeValueUpdateWithRegions (
765 theAttributeRegionPairs,
768 #elif defined(DtIFSPEC1516E)
773 theAttributeRegionPairs,
774 const char * theObjectInstanceName=
NULL) {
return 0;}
777 virtual void associateRegionsForUpdates (
780 theAttributeRegionPairs) {}
783 virtual void unassociateRegionsForUpdates (
786 theAttributeRegionPairs) {}
789 virtual void subscribeObjectClassAttributesWithRegions (
792 theAttributeRegionPairs,
794 MAKRti::DtString updateRateDesignator ) {}
797 virtual void unsubscribeObjectClassAttributesWithRegions (
800 theAttributeHandleSetRegionHandleSetPairVector) {}
803 virtual void requestAttributeValueUpdateWithRegions (
806 theAttributeRegionPairs,
814 DtRegion13 *regions[],
815 unsigned long numberOfHandles,
816 const char *objectName=
NULL) {
return 0; }
843 const DtRegion &theRegion) {}
855 virtual void checkPendingTsoRemoveObject();
866 virtual void prepareToRestore();
873 virtual void sendNotDiscoveredMsgForSmartForwarding(
878 virtual void sendNotDiscoveredMsgForSmartForwarding(
882 const DtAhvps* attributes);
893 static void setCreatorFunction(DtObjectMgrCreator creator);
899 static void setInternalCreatorFunction(DtObjectMgrCreator fn);
908 virtual void provideAttrValueUpdate(
const DtRtiObject* obj,
911 #elif defined(DtIFSPEC1516E)
912 virtual void provideAttrValueUpdate(
const DtRtiObject* obj,
916 virtual void provideAttrValueUpdate(
const DtRtiObject* obj,
923 virtual void remoteSubscribe(
930 virtual void remotePassiveSubscribe(
938 virtual void remoteUnsubscribe(
945 virtual void setDiscoveredClass(
DtRtiObject&
object,
950 virtual void processUpdate(
const DtUpdateMsg& msg);
951 #if defined(DtIFSPEC1516) || defined(DtIFSPEC1516E)
952 virtual void processReserveName(DtReserveNameMsg
const& msg);
953 virtual void processNameReserved(DtNameReservedMsg
const& msg);
958 virtual void processRegister(
const DtRegObjMsg& msg);
963 virtual void processDeleteTso(
const DtDeleteTsoMsg& msg);
965 virtual void processLocDelete(
const DtLocDelMsg& msg);
980 virtual void processAcquire(
984 #elif defined(DtIFSPEC1516E)
985 virtual void processAcquire(
990 virtual void processAcquire(
997 virtual void processCancelAcquire(
1003 virtual void processConfirmCancelAcquire(
1013 #elif defined(DtIFSPEC1516E)
1036 virtual void processNotifyAcquire(
1040 bool forceAcquire=
false);
1041 #elif defined(DtIFSPEC1516E)
1042 virtual void processNotifyAcquire(
1046 bool forceAcquire=
false);
1048 virtual void processNotifyAcquire(
1052 bool forceAcquire=
false);
1061 #elif defined(DtIFSPEC1516E)
1085 bool isPassive,
bool replacement,
1087 virtual void sendRegisterMsg(
DtRtiObject*
object);
1097 virtual void sendBestEffortUpdateMsg(
1101 unsigned long serialNumber,
const MAKRti::DtInetAddr& destAddr,
1102 unsigned int offset=0);
1104 virtual void sendReliableUpdateMsg(
1109 unsigned long serialNumber);
1111 virtual void sendReserveNameMsg(std::string
const & theObjectInstanceName);
1118 virtual void sendOwnershipMsg(
1124 virtual void sendOwnershipMsg(
1130 #elif defined(DtIFSPEC1516E)
1131 virtual void sendBestEffortUpdateMsg(
1135 unsigned long serialNumber,
const MAKRti::DtInetAddr& destAddr,
1136 unsigned int offset=0);
1138 virtual void sendReliableUpdateMsg(
1143 unsigned long serialNumber);
1145 virtual void sendReserveNameMsg(std::string
const & theObjectInstanceName);
1152 virtual void sendOwnershipMsg(
1158 virtual void sendOwnershipMsg(
1164 virtual void sendAttrQueryFoundMsg(
1168 DtTransportType transType );
1170 virtual void sendInterQueryFoundMsg(
1174 DtTransportType transType );
1176 void sendInterQueryMsg(
1181 virtual void sendBestEffortUpdateMsg(
1185 unsigned long serialNumber,
const MAKRti::DtInetAddr& destAddr,
1186 unsigned int offset=0);
1188 virtual void sendReliableUpdateMsg(
1193 unsigned long serialNumber);
1195 virtual void sendRequestMsg(
1207 virtual void sendOwnershipMsg(
1213 virtual void sendOwnershipMsg(
1222 virtual void sendPendingStartUpdates();
1225 virtual void sendPendingStopUpdates();
1228 virtual void sendPendingStartReg();
1231 virtual void sendPendingStopReg();
1234 virtual void sendPendingRegister();
1237 virtual void sendPendingSubscription();
1240 virtual void sendPendingRemovals();
1243 virtual void sendPendingRequestAttributes();
1246 virtual void sendPendingDiscoveries();
1249 virtual void invokePendingDivestNotification();
1252 virtual void purgeDeletedObjects();
1254 #if defined(DtIFSPEC1516) || defined(DtIFSPEC1516E)
1256 virtual void resetNameReservation(std::string objectName);
1259 virtual void resetNameUsed(std::string objectName);
1264 virtual void throwIfAcquisitionPending(
1268 #if defined(DtIFSPEC1516) || defined(DtIFSPEC1516E)
1271 virtual void confirmAllInstancesPendingDivestitures(
1277 virtual void confirmPendingDivestitures(
1284 virtual void cancelPendingConfirms(
1291 virtual void divestAllInstances(
1297 virtual void divestAllInstances();
1301 virtual void releaseAllAttributes(
DtRtiObject*
object);
1305 virtual void releaseOwnership(
1310 virtual void sendUpdateMessage(
DtUpdateMsg* update,
1312 MAKRti::DtTransportType trans,
unsigned int numberAttrs,
1313 MAKRti::DtInetAddr destAddr = DtInetAddr::inaddrAny(),
1314 unsigned int offset = 0);
1319 virtual void incrementUpdateTally(
DtHandle objectClass);
1320 virtual void incrementSentAttributesTally(
DtHandle objectClass,
1321 MAKRti::DtTransportType transport,
unsigned int numberAttrs);
1322 virtual void incrementReceivedTally(
DtHandle objectClass,
1323 MAKRti::DtTransportType transport,
unsigned int numberAttrs);
1328 virtual void deleteAllOwnedObjects();
1331 virtual void deleteObj(
DtRtiObject* obj,
bool isLocalDelete=
false);
1336 virtual void retainTsoDeletedObj(
DtRtiObject* obj,
1342 virtual void retainTsoRemovedObj(
DtRtiObject* obj,
1344 #elif defined(DtIFSPEC1516E)
1347 virtual void retainTsoDeletedObj(
DtRtiObject* obj,
1353 virtual void retainTsoRemovedObj(
DtRtiObject* obj,
1363 virtual void retainTsoRemovedObj(
DtRtiObject* obj,
1373 virtual void removeObjectAssociations(
DtRtiObject&
object);
1378 virtual void collectRemoteSubscriptions(
DtRtiObject&
object);
1385 virtual unsigned long nextOffsetId();
1405 const DtAhvps& inSet,
1413 const char* objName,
1418 bool federateOwnsPrivilegeToDelete);
1428 virtual void calculateRegionSet(
1430 #elif defined(DtIFSPEC1516E)
1431 virtual void calculateRegionSet(
1434 virtual void calculateRegionSet(
1435 unsigned long channel,
const DtAhvps& reflectSet) {}
1447 virtual void acquireAssociateRegionForUpdates(
1452 virtual void unassociateRegionForDivested(
1462 rti1516::ObjectInstanceHandle objectHandle,
1469 unsigned long serialNumber=0,
1471 #elif defined(DtIFSPEC1516E)
1473 rti1516e::ObjectInstanceHandle objectHandle,
1480 unsigned long serialNumber=0,
1485 DtAhvps
const& reflectedValues,
1488 char const * tag = 0,
1490 unsigned long serialNumber=0);
1495 virtual bool acceptObjectChannel(
unsigned long channel);
1499 virtual bool acceptRequestChannel(
unsigned long channel);
1508 virtual void removeClassMulticast(
DtObjectClassInfo* classDesc,
float rate=-1.0);
1518 virtual void destroyObjectLists();
1521 virtual unsigned long savePacketLength();
1527 static void processUpdate(
const DtUpdateMsg& msg,
void* usr);
1528 #if defined(DtIFSPEC1516) || defined(DtIFSPEC1516E)
1529 static void processReserveName(DtReserveNameMsg
const& msg,
void* usr);
1530 static void processNameReserved(DtNameReservedMsg
const& msg,
void* usr);
1531 #ifdef DtIFSPEC1516E
1535 static void processRegister(
const DtRegObjMsg& msg,
void* usr);
1536 static void processDiscover(
const DtDiscObjMsg& msg,
void* usr);
1537 static void processRequestDiscover(
const DtReqDiscObjMsg& msg,
void* usr);
1538 static void processDelete(
const DtDeleteRoMsg& msg,
void* usr);
1540 static void processDeleteTso(
const DtDeleteTsoMsg& msg,
void* usr);
1542 static void processLocDelete(
const DtLocDelMsg& msg,
void* usr);
1543 static void processPub(
const DtPubObjMsg& msg,
void* usr);
1544 static void processUnpub(
const DtUnpubObjMsg& msg,
void* usr);
1545 static void processSub(
const DtSubObjMsg& msg,
void* usr);
1546 static void processUnsub(
const DtUnsubObjMsg& msg,
void* usr);
1547 static void processRequest(
const DtRequestMsg& msg,
void* usr);
1548 static void processOwnership(
const DtOwnershipMsg& msg,
void* usr);
1549 #ifdef DtIFSPEC1516E
1560 #if defined(DtIFSPEC1516) || defined(DtIFSPEC1516E)
1562 std::set<std::string> myReservedNames;
1564 std::set<std::string> myUsedNames;
1566 std::set<std::string> myFailedNames;
1607 DtObjectHandleTimeMap myTsoDeletedObjects;
1608 DtObjectPtrTimeMap myTsoDeletedObjectCache;
1609 DtObjectPtrTimeMap myTsoRemovedObjectCache;