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;
60 class DtRegionEntryListWithAttributes;
98 typedef std::map<DtObjectInstanceHandle, DtAttributeHandleSet>
110 typedef std::map<DtObjectInstanceHandle, rti1516::LogicalTime const *> DtObjectHandleTimeMap;
111 typedef std::map<DtRtiObject*, rti1516::LogicalTime const *> DtObjectPtrTimeMap;
112 #elif defined(DtIFSPEC1516E)
113 typedef std::map<DtObjectInstanceHandle, rti1516e::LogicalTime const *> DtObjectHandleTimeMap;
114 typedef std::map<DtRtiObject*, rti1516e::LogicalTime const *> DtObjectPtrTimeMap;
116 typedef std::map<DtObjectInstanceHandle, RTI::FedTime const *> DtObjectHandleTimeMap;
117 typedef std::map<DtRtiObject*, RTI::FedTime const *> DtObjectPtrTimeMap;
142 virtual void postJoinInit();
145 virtual bool isPostJoined()
const;
169 virtual DtTimeMgr* timeMgr();
170 virtual DtTimeMgr* timeMgr()
const;
174 virtual bool useHlaNamePrefix();
193 virtual void publish(
198 virtual void unpublishClass(
202 virtual void unpublishAttributes(
208 virtual void unpublishAttributes(
211 bool implicitlyUnpublishPrivilegeToDelete);
214 virtual void subscribe(
221 virtual void subscribe(
225 MAKRti::DtString updateRateDesignator);
229 virtual void unsubscribeClass(
233 virtual void unsubscribeAttributes(
238 virtual void unsubscribeAttributes(
244 virtual void reserveMultipleObjectInstanceName(
245 std::set<std::wstring>
const & theObjectInstanceNames);
248 #if defined(DtIFSPEC1516) || defined(DtIFSPEC1516E)
250 virtual void reserveObjectInstanceName (
251 std::string
const & theObjectInstanceName);
256 std::string
const & theObjectInstanceName);
267 virtual void releaseObjectInstanceName(
268 std::string
const & theObjectInstanceName);
269 virtual void releaseMultipleObjectInstanceNames(
270 std::set< std::wstring >
const & theObjectInstanceNames );
271 virtual void queryAttributeTransportationType(
274 virtual void queryInteractionTransportationType(
294 virtual unsigned long deleteObj(
298 #elif defined(DtIFSPEC1516E)
301 virtual unsigned long deleteObj(
308 virtual unsigned long deleteObj(
311 char const * theTag);
319 virtual void requestObjectUpdate (
323 #elif defined(DtIFSPEC1516E)
324 virtual void requestObjectUpdate (
329 virtual void requestObjectUpdate (
337 virtual void requestClassUpdate (
342 #elif defined(DtIFSPEC1516E)
343 virtual void requestClassUpdate (
349 virtual void requestClassUpdate (
360 virtual unsigned long sendUpdate(
362 const DtAhvps& theAttrs,
365 #elif defined(DtIFSPEC1516E)
366 virtual unsigned long sendUpdate(
368 const DtAhvps& theAttrs,
372 virtual unsigned long sendUpdate(
374 const DtAhvps& theAttrs,
382 virtual unsigned long sendUpdate(
384 const DtAhvps& theAttrs,
387 #elif defined(DtIFSPEC1516E)
388 virtual unsigned long sendUpdate(
390 const DtAhvps& theAttrs,
394 virtual unsigned long sendUpdate(
396 const DtAhvps& theAttrs,
403 virtual void acquireAttrs(
408 #elif defined(DtIFSPEC1516E)
409 virtual void acquireAttrs(
415 virtual void acquireAttrs(
423 virtual void cancelAcquire(
429 virtual void divestOwnership(
437 virtual void confirmDivestiture (
442 #elif defined(DtIFSPEC1516E)
444 virtual void divestOwnership(
452 virtual void confirmDivestiture (
459 virtual void divestOwnership(
467 virtual void cancelDivest(
513 virtual DtRtiObject* lrcManagedObj(
const char* name);
517 virtual void removeFromAllLists(
DtRtiObject*
object);
520 virtual void queryOwnership(
524 virtual bool isAcquistionPending();
527 virtual void autoProvideAttrValueUpdate();
548 virtual void sendRequestMsg(
555 #elif defined(DtIFSPEC1516E)
558 virtual void sendRequestMsg(
568 virtual void addPendingStartUpdates(
573 virtual void addPendingStopUpdates(
606 bool isNonDiscovery);
609 virtual void processResign(
const DtResignMsg& msg);
617 #elif defined(DtIFSPEC1516E)
627 virtual void preTick();
630 virtual void postTick();
636 virtual void setRestoreInProgress(
bool isRestore);
637 virtual bool restoreInProgress()
const;
643 virtual void enableClassRelevanceSwitch();
644 virtual void disableClassRelevanceSwitch();
648 virtual void setClassRelevanceSwitch(
bool enableSwitch);
649 virtual bool classRelevanceSwitch();
654 virtual void enableAttributeRelevanceSwitch();
655 virtual void disableAttributeRelevanceSwitch();
659 virtual void setAttributeRelevanceSwitch(
bool enableSwitch);
660 virtual bool attributeRelevanceSwitch();
665 virtual void enableAttributeScopeSwitch();
666 virtual void disableAttributeScopeSwitch();
670 virtual void setAttributeScopeSwitch(
bool enableSwitch);
671 virtual bool attributeScopeSwitch();
686 MAKRti::DtString& objectName);
710 virtual void getObjectsOwned(DtMomTallyList& list);
711 virtual void getObjectsReflected(DtMomTallyList& list);
712 virtual void getObjectsUpdated(DtMomTallyList& list);
717 virtual int numObjectsOwned();
722 MAKRti::DtTransportType theType);
738 virtual void registerAssociateRegionForUpdates(
DtRtiObject&
object,
746 theAttributeRegionPairs,
747 const char * theObjectInstanceName=
NULL) {
return 0;}
750 virtual void associateRegionsForUpdates (
753 theAttributeRegionPairs) {}
756 virtual void unassociateRegionsForUpdates (
759 theAttributeRegionPairs) {}
762 virtual void subscribeObjectClassAttributesWithRegions (
765 theAttributeRegionPairs,
769 virtual void unsubscribeObjectClassAttributesWithRegions (
772 theAttributeHandleSetRegionHandleSetPairVector) {}
775 virtual void requestAttributeValueUpdateWithRegions (
778 theAttributeRegionPairs,
781 #elif defined(DtIFSPEC1516E)
786 theAttributeRegionPairs,
787 const char * theObjectInstanceName=
NULL) {
return 0;}
790 virtual void associateRegionsForUpdates (
793 theAttributeRegionPairs) {}
796 virtual void unassociateRegionsForUpdates (
799 theAttributeRegionPairs) {}
802 virtual void subscribeObjectClassAttributesWithRegions (
805 theAttributeRegionPairs,
807 MAKRti::DtString updateRateDesignator ) {}
810 virtual void unsubscribeObjectClassAttributesWithRegions (
813 theAttributeHandleSetRegionHandleSetPairVector) {}
816 virtual void requestAttributeValueUpdateWithRegions (
819 theAttributeRegionPairs,
827 DtRegion13 *regions[],
828 unsigned long numberOfHandles,
829 const char *objectName=
NULL) {
return 0; }
856 const DtRegion &theRegion) {}
868 virtual void checkPendingTsoRemoveObject();
879 virtual void prepareToRestore();
886 virtual void sendNotDiscoveredMsgForSmartForwarding(
891 virtual void sendNotDiscoveredMsgForSmartForwarding(
895 const DtAhvps* attributes);
906 static void setCreatorFunction(DtObjectMgrCreator creator);
912 static void setInternalCreatorFunction(DtObjectMgrCreator fn);
926 virtual void provideAttrValueUpdate(
const DtRtiObject* obj,
929 #elif defined(DtIFSPEC1516E)
930 virtual void provideAttrValueUpdate(
const DtRtiObject* obj,
934 virtual void provideAttrValueUpdate(
const DtRtiObject* obj,
941 virtual void remoteSubscribe(
948 virtual void remotePassiveSubscribe(
956 virtual void remoteUnsubscribe(
963 virtual void setDiscoveredClass(
DtRtiObject&
object,
968 virtual void processUpdate(
const DtUpdateMsg& msg);
969 #if defined(DtIFSPEC1516) || defined(DtIFSPEC1516E)
970 virtual void processReserveName(DtReserveNameMsg
const& msg);
971 virtual void processNameReserved(DtNameReservedMsg
const& msg);
976 virtual void processRegister(
const DtRegObjMsg& msg);
982 virtual void processDeleteTso(
const DtDeleteTsoMsg& msg);
984 virtual void processLocDelete(
const DtLocDelMsg& msg);
999 virtual void processAcquire(
1003 #elif defined(DtIFSPEC1516E)
1004 virtual void processAcquire(
1009 virtual void processAcquire(
1016 virtual void processCancelAcquire(
1022 virtual void processConfirmCancelAcquire(
1032 #elif defined(DtIFSPEC1516E)
1055 virtual void processNotifyAcquire(
1059 bool forceAcquire=
false);
1060 #elif defined(DtIFSPEC1516E)
1061 virtual void processNotifyAcquire(
1065 bool forceAcquire=
false);
1067 virtual void processNotifyAcquire(
1071 bool forceAcquire=
false);
1080 #elif defined(DtIFSPEC1516E)
1104 bool isPassive,
bool replacement,
1107 bool isPassive,
bool replacement,
1121 virtual void sendBestEffortUpdateMsg(
1125 unsigned long serialNumber,
const MAKRti::DtInetAddr& destAddr,
1126 unsigned int offset=0);
1128 virtual void sendReliableUpdateMsg(
1133 unsigned long serialNumber);
1135 virtual void sendReserveNameMsg(std::string
const & theObjectInstanceName);
1142 virtual void sendOwnershipMsg(
1148 virtual void sendOwnershipMsg(
1154 #elif defined(DtIFSPEC1516E)
1155 virtual void sendBestEffortUpdateMsg(
1159 unsigned long serialNumber,
const MAKRti::DtInetAddr& destAddr,
1160 unsigned int offset=0);
1162 virtual void sendReliableUpdateMsg(
1167 unsigned long serialNumber);
1169 virtual void sendReserveNameMsg(std::string
const & theObjectInstanceName);
1176 virtual void sendOwnershipMsg(
1182 virtual void sendOwnershipMsg(
1188 virtual void sendAttrQueryFoundMsg(
1192 DtTransportType transType );
1194 virtual void sendInterQueryFoundMsg(
1198 DtTransportType transType );
1200 void sendInterQueryMsg(
1205 virtual void sendBestEffortUpdateMsg(
1209 unsigned long serialNumber,
const MAKRti::DtInetAddr& destAddr,
1210 unsigned int offset=0);
1212 virtual void sendReliableUpdateMsg(
1217 unsigned long serialNumber);
1219 virtual void sendRequestMsg(
1232 virtual void sendOwnershipMsg(
1238 virtual void sendOwnershipMsg(
1247 virtual void sendPendingStartUpdates();
1250 virtual void sendPendingStopUpdates();
1253 virtual void sendPendingStartReg();
1256 virtual void sendPendingStopReg();
1259 virtual void sendPendingRegister();
1262 virtual void sendPendingSubscription();
1265 virtual void sendPendingRemovals();
1268 virtual void sendPendingRequestAttributes();
1271 virtual void sendPendingDiscoveries();
1274 virtual void invokePendingDivestNotification();
1277 virtual void purgeDeletedObjects();
1279 #if defined(DtIFSPEC1516) || defined(DtIFSPEC1516E)
1281 virtual void resetNameReservation(std::string objectName);
1284 virtual void resetNameUsed(std::string objectName);
1289 virtual void throwIfAcquisitionPending(
1293 #if defined(DtIFSPEC1516) || defined(DtIFSPEC1516E)
1296 virtual void confirmAllInstancesPendingDivestitures(
1302 virtual void confirmPendingDivestitures(
1309 virtual void cancelPendingConfirms(
1316 virtual void divestAllInstances(
1322 virtual void divestAllInstances();
1326 virtual void releaseAllAttributes(
DtRtiObject*
object);
1330 virtual void releaseOwnership(
1335 virtual void sendUpdateMessage(
DtUpdateMsg* update,
1337 MAKRti::DtTransportType trans,
unsigned int numberAttrs,
1338 MAKRti::DtInetAddr destAddr = DtInetAddr::inaddrAny(),
1339 unsigned int offset = 0);
1344 virtual void incrementUpdateTally(
DtHandle objectClass);
1345 virtual void incrementSentAttributesTally(
DtHandle objectClass,
1346 MAKRti::DtTransportType transport,
unsigned int numberAttrs);
1347 virtual void incrementReceivedTally(
DtHandle objectClass,
1348 MAKRti::DtTransportType transport,
unsigned int numberAttrs);
1353 virtual void deleteAllOwnedObjects();
1356 virtual void deleteObj(
DtRtiObject* obj,
bool isLocalDelete=
false);
1361 virtual void retainTsoDeletedObj(
DtRtiObject* obj,
1367 virtual void retainTsoRemovedObj(
DtRtiObject* obj,
1369 #elif defined(DtIFSPEC1516E)
1372 virtual void retainTsoDeletedObj(
DtRtiObject* obj,
1378 virtual void retainTsoRemovedObj(
DtRtiObject* obj,
1388 virtual void retainTsoRemovedObj(
DtRtiObject* obj,
1398 virtual void removeObjectAssociations(
DtRtiObject&
object);
1403 virtual void collectRemoteSubscriptions(
DtRtiObject&
object);
1410 virtual unsigned long nextOffsetId();
1430 const DtAhvps& inSet,
1438 const char* objName,
1443 bool federateOwnsPrivilegeToDelete);
1453 virtual void calculateRegionSet(
1455 #elif defined(DtIFSPEC1516E)
1456 virtual void calculateRegionSet(
1459 virtual void calculateRegionSet(
1460 unsigned long channel,
const DtAhvps& reflectSet) {}
1472 virtual void acquireAssociateRegionForUpdates(
1477 virtual void unassociateRegionForDivested(
1487 rti1516::ObjectInstanceHandle objectHandle,
1494 unsigned long serialNumber=0,
1496 #elif defined(DtIFSPEC1516E)
1498 rti1516e::ObjectInstanceHandle objectHandle,
1505 unsigned long serialNumber=0,
1510 DtAhvps
const& reflectedValues,
1513 char const * tag = 0,
1515 unsigned long serialNumber=0);
1520 virtual bool acceptObjectChannel(
unsigned long channel);
1524 virtual bool acceptRequestChannel(
unsigned long channel);
1533 virtual void removeClassMulticast(
DtObjectClassInfo* classDesc,
float rate=-1.0);
1543 virtual void destroyObjectLists();
1546 virtual unsigned long savePacketLength();
1552 static void processUpdate(
const DtUpdateMsg& msg,
void* usr);
1553 #if defined(DtIFSPEC1516) || defined(DtIFSPEC1516E)
1554 static void processReserveName(DtReserveNameMsg
const& msg,
void* usr);
1555 static void processNameReserved(DtNameReservedMsg
const& msg,
void* usr);
1556 #ifdef DtIFSPEC1516E
1560 static void processRegister(
const DtRegObjMsg& msg,
void* usr);
1562 static void processDiscover(
const DtDiscObjMsg& msg,
void* usr);
1563 static void processRequestDiscover(
const DtReqDiscObjMsg& msg,
void* usr);
1564 static void processDelete(
const DtDeleteRoMsg& msg,
void* usr);
1566 static void processDeleteTso(
const DtDeleteTsoMsg& msg,
void* usr);
1568 static void processLocDelete(
const DtLocDelMsg& msg,
void* usr);
1569 static void processPub(
const DtPubObjMsg& msg,
void* usr);
1570 static void processUnpub(
const DtUnpubObjMsg& msg,
void* usr);
1571 static void processSub(
const DtSubObjMsg& msg,
void* usr);
1572 static void processUnsub(
const DtUnsubObjMsg& msg,
void* usr);
1573 static void processRequest(
const DtRequestMsg& msg,
void* usr);
1574 static void processOwnership(
const DtOwnershipMsg& msg,
void* usr);
1575 #ifdef DtIFSPEC1516E
1586 #if defined(DtIFSPEC1516) || defined(DtIFSPEC1516E)
1588 std::set<std::string> myReservedNames;
1590 std::set<std::string> myUsedNames;
1592 std::set<std::string> myFailedNames;
1633 DtObjectHandleTimeMap myTsoDeletedObjects;
1634 DtObjectPtrTimeMap myTsoDeletedObjectCache;
1635 DtObjectPtrTimeMap myTsoRemovedObjectCache;