21 #include <vlutil/vlFedTarget.h>
30 #if defined(DtIFSPEC1516) || defined(DtIFSPEC1516E)
43 #define DtHlaNamePrefix "HLA_"
63 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 inline DtTimeMgr* timeMgr() {
return federateMgr()->timeMgr();}
170 inline DtTimeMgr* timeMgr()
const {
return federateMgr()->timeMgr();}
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);
250 virtual void reserveObjectInstanceName(
251 std::string
const & theObjectInstanceName);
253 #if defined(DtIFSPEC1516) || defined(DtIFSPEC1516E)
257 std::string
const & theObjectInstanceName);
268 virtual void releaseObjectInstanceName(
269 std::string
const & theObjectInstanceName)
270 throw (rti1516e::ObjectInstanceNameNotReserved);
271 virtual void releaseMultipleObjectInstanceNames(
272 std::set< std::wstring >
const & theObjectInstanceNames )
273 throw (rti1516e::ObjectInstanceNameNotReserved);
274 virtual void queryAttributeTransportationType(
277 virtual void queryInteractionTransportationType(
297 virtual unsigned long deleteObj(
299 rti1516::LogicalTime
const * theTime,
300 rti1516::VariableLengthData
const & theTag);
301 #elif defined(DtIFSPEC1516E)
304 virtual unsigned long deleteObj(
311 virtual unsigned long deleteObj(
313 RTI::FedTime
const * theTime,
314 char const * theTag);
322 virtual void requestObjectUpdate (
326 #elif defined(DtIFSPEC1516E)
327 virtual void requestObjectUpdate (
332 virtual void requestObjectUpdate (
340 virtual void requestClassUpdate (
345 #elif defined(DtIFSPEC1516E)
346 virtual void requestClassUpdate (
352 virtual void requestClassUpdate (
363 virtual unsigned long sendUpdate(
365 const DtAhvps& theAttrs,
366 rti1516::LogicalTime
const * theTime,
367 rti1516::VariableLengthData
const & tag);
368 #elif defined(DtIFSPEC1516E)
369 virtual unsigned long sendUpdate(
371 const DtAhvps& theAttrs,
375 virtual unsigned long sendUpdate(
377 const DtAhvps& theAttrs,
378 RTI::FedTime
const * theTime,
385 virtual unsigned long sendUpdate(
387 const DtAhvps& theAttrs,
388 rti1516::LogicalTime
const * theTime,
389 rti1516::VariableLengthData
const & tag);
390 #elif defined(DtIFSPEC1516E)
391 virtual unsigned long sendUpdate(
393 const DtAhvps& theAttrs,
397 virtual unsigned long sendUpdate(
399 const DtAhvps& theAttrs,
400 RTI::FedTime
const * theTime,
406 virtual void acquireAttrs(
411 #elif defined(DtIFSPEC1516E)
412 virtual void acquireAttrs(
418 virtual void acquireAttrs(
426 virtual void cancelAcquire(
432 virtual void divestOwnership(
440 virtual void confirmDivestiture (
443 rti1516::VariableLengthData
const & theUserSuppliedTag);
445 #elif defined(DtIFSPEC1516E)
447 virtual void divestOwnership(
455 virtual void confirmDivestiture (
462 virtual void divestOwnership(
470 virtual void cancelDivest(
516 virtual DtRtiObject* lrcManagedObj(
const char* name);
520 virtual void removeFromAllLists(
DtRtiObject*
object);
523 virtual void queryOwnership(
527 virtual bool isAcquistionPending();
533 virtual int evaluateSubscription(
DtRtiMsg const& msg);
536 virtual void autoProvideAttrValueUpdate();
557 virtual void sendRequestMsg(
560 rti1516::VariableLengthData
const & tag,
564 #elif defined(DtIFSPEC1516E)
567 virtual void sendRequestMsg(
577 virtual void addPendingStartUpdates(
582 virtual void addPendingStopUpdates(
615 bool isNonDiscovery);
618 virtual void processResign(
const DtResignMsg& msg);
626 #elif defined(DtIFSPEC1516E)
636 virtual void preTick();
639 virtual void postTick();
645 virtual void setRestoreInProgress(
bool isRestore);
646 virtual bool restoreInProgress()
const;
652 virtual void enableClassRelevanceSwitch();
653 virtual void disableClassRelevanceSwitch();
657 virtual void setClassRelevanceSwitch(
bool enableSwitch);
658 virtual bool classRelevanceSwitch();
663 virtual void enableAttributeRelevanceSwitch();
664 virtual void disableAttributeRelevanceSwitch();
668 virtual void setAttributeRelevanceSwitch(
bool enableSwitch);
669 virtual bool attributeRelevanceSwitch();
674 virtual void enableAttributeScopeSwitch();
675 virtual void disableAttributeScopeSwitch();
679 virtual void setAttributeScopeSwitch(
bool enableSwitch);
680 virtual bool attributeScopeSwitch();
695 MAKRti::DtString& objectName);
719 virtual void getObjectsOwned(DtMomTallyList& list);
720 virtual void getObjectsReflected(DtMomTallyList& list);
721 virtual void getObjectsUpdated(DtMomTallyList& list);
726 virtual int numObjectsOwned();
731 MAKRti::DtTransportType theType);
736 MAKRti::DtOrderType theType);
747 virtual void registerAssociateRegionForUpdates(
DtRtiObject&
object,
755 theAttributeRegionPairs,
756 const char * theObjectInstanceName=NULL) {
return 0;}
759 virtual void associateRegionsForUpdates (
762 theAttributeRegionPairs) {}
765 virtual void unassociateRegionsForUpdates (
768 theAttributeRegionPairs) {}
771 virtual void subscribeObjectClassAttributesWithRegions (
774 theAttributeRegionPairs,
778 virtual void unsubscribeObjectClassAttributesWithRegions (
781 theAttributeHandleSetRegionHandleSetPairVector) {}
784 virtual void requestAttributeValueUpdateWithRegions (
787 theAttributeRegionPairs,
788 rti1516::VariableLengthData
const & theUserSuppliedTag) {}
790 #elif defined(DtIFSPEC1516E)
795 theAttributeRegionPairs,
796 const char * theObjectInstanceName=NULL) {
return 0;}
799 virtual void associateRegionsForUpdates (
802 theAttributeRegionPairs) {}
805 virtual void unassociateRegionsForUpdates (
808 theAttributeRegionPairs) {}
811 virtual void subscribeObjectClassAttributesWithRegions (
814 theAttributeRegionPairs,
816 MAKRti::DtString updateRateDesignator ) {}
819 virtual void unsubscribeObjectClassAttributesWithRegions (
822 theAttributeHandleSetRegionHandleSetPairVector) {}
825 virtual void requestAttributeValueUpdateWithRegions (
828 theAttributeRegionPairs,
836 DtRegion13 *regions[],
837 unsigned long numberOfHandles,
838 const char *objectName=NULL) {
return 0; }
841 virtual void associateRegionForUpdates(
847 virtual void unassociateRegionForUpdates(
851 virtual void subscribeObjectClassAttributesWithRegion(
858 virtual void unsubscribeObjectClassWithRegion(
862 virtual void requestClassAttributeValueUpdateWithRegion (
865 const DtRegion &theRegion) {}
877 virtual void checkPendingTsoRemoveObject();
888 virtual void prepareToRestore();
895 virtual void sendNotDiscoveredMsgForSmartForwarding(
900 virtual void sendNotDiscoveredMsgForSmartForwarding(
904 const DtAhvps* attributes);
915 static void setCreatorFunction(DtObjectMgrCreator creator);
921 static void setInternalCreatorFunction(DtObjectMgrCreator fn);
936 virtual void provideAttrValueUpdate(
const DtRtiObject* obj,
938 rti1516::VariableLengthData
const & tag);
939 #elif defined(DtIFSPEC1516E)
940 virtual void provideAttrValueUpdate(
const DtRtiObject* obj,
944 virtual void provideAttrValueUpdate(
const DtRtiObject* obj,
951 virtual void remoteSubscribe(
958 virtual void remotePassiveSubscribe(
966 virtual void remoteUnsubscribe(
973 virtual void setDiscoveredClass(
DtRtiObject&
object,
978 virtual void processUpdate(
const DtUpdateMsg& msg);
984 virtual void processRegister(
const DtRegObjMsg& msg);
990 virtual void processDeleteTso(
const DtDeleteTsoMsg& msg);
992 virtual void processLocDelete(
const DtLocDelMsg& msg);
1007 virtual void processAcquire(
1010 rti1516::VariableLengthData
const & tag);
1011 #elif defined(DtIFSPEC1516E)
1012 virtual void processAcquire(
1017 virtual void processAcquire(
1024 virtual void processCancelAcquire(
1030 virtual void processConfirmCancelAcquire(
1040 #elif defined(DtIFSPEC1516E)
1063 virtual void processNotifyAcquire(
1067 bool forceAcquire=
false);
1068 #elif defined(DtIFSPEC1516E)
1069 virtual void processNotifyAcquire(
1073 bool forceAcquire=
false);
1075 virtual void processNotifyAcquire(
1079 bool forceAcquire=
false);
1083 virtual void processNotifyAcquireForDirectedMessaging(
1093 rti1516::VariableLengthData
const & tag,
1095 #elif defined(DtIFSPEC1516E)
1119 bool isPassive,
bool replacement,
1122 bool isPassive,
bool replacement,
1137 virtual void sendReserveNameMsg(std::string
const & theObjectInstanceName);
1138 #if defined (DtIFSPEC1516) || defined(DtIFSPEC1516E)
1140 virtual void sendBestEffortUpdateMsg(
1142 RTI_IFSPEC::LogicalTime
const * theTime,
1143 RTI_IFSPEC::VariableLengthData
const & tag,
1144 unsigned long serialNumber,
const MAKRti::DtInetAddr& destAddr,
1145 unsigned int offset=0);
1147 virtual void sendReliableUpdateMsg(
1150 RTI_IFSPEC::LogicalTime
const * theTime,
1151 RTI_IFSPEC::VariableLengthData
const & tag,
1152 unsigned long serialNumber);
1157 RTI_IFSPEC::LogicalTime
const * theTime,
1158 RTI_IFSPEC::VariableLengthData
const & tag);
1160 virtual void sendOwnershipMsg(
1166 virtual void sendOwnershipMsg(
1173 #if defined(DtIFSPEC1516E)
1175 virtual void sendAttrQueryFoundMsg(
1179 DtTransportType transType );
1181 virtual void sendInterQueryFoundMsg(
1185 DtTransportType transType );
1187 void sendInterQueryMsg(
1192 #elif defined(DtIFSPEC13)
1193 virtual void sendBestEffortUpdateMsg(
1195 RTI::FedTime
const * theTime,
1197 unsigned long serialNumber,
const MAKRti::DtInetAddr& destAddr,
1198 unsigned int offset=0);
1200 virtual void sendReliableUpdateMsg(
1203 RTI::FedTime
const * theTime,
1205 unsigned long serialNumber);
1207 virtual void sendRequestMsg(
1217 RTI::FedTime
const * theTime,
1220 virtual void sendOwnershipMsg(
1226 virtual void sendOwnershipMsg(
1235 virtual void sendPendingStartUpdates();
1238 virtual void sendPendingStopUpdates();
1241 virtual void sendPendingStartReg();
1244 virtual void sendPendingStopReg();
1247 virtual void sendPendingRegister();
1250 virtual void sendPendingSubscription();
1253 virtual void sendPendingRemovals();
1256 virtual void sendPendingRequestAttributes();
1259 virtual void sendPendingDiscoveries();
1262 virtual void invokePendingDivestNotification();
1265 virtual void purgeDeletedObjects();
1267 #if defined(DtIFSPEC1516) || defined(DtIFSPEC1516E)
1269 virtual void resetNameReservation(std::string objectName);
1272 virtual void resetNameUsed(std::string objectName);
1277 virtual void throwIfAcquisitionPending(
1281 #if defined(DtIFSPEC1516) || defined(DtIFSPEC1516E)
1284 virtual void confirmAllInstancesPendingDivestitures(
1290 virtual void confirmPendingDivestitures(
1297 virtual void cancelPendingConfirms(
1304 virtual void divestAllInstances(
1310 virtual void divestAllInstances();
1314 virtual void releaseAllAttributes(
DtRtiObject*
object);
1318 virtual void releaseOwnership(
1323 virtual void sendUpdateMessage(
DtUpdateMsg* update,
1325 MAKRti::DtTransportType trans,
unsigned int numberAttrs,
1326 MAKRti::DtInetAddr destAddr = DtInetAddr::inaddrAny(),
1327 unsigned int offset = 0);
1332 virtual void incrementUpdateTally(
DtHandle objectClass);
1333 virtual void incrementSentAttributesTally(
DtHandle objectClass,
1334 MAKRti::DtTransportType transport,
unsigned int numberAttrs);
1335 virtual void incrementReceivedTally(
DtHandle objectClass,
1336 MAKRti::DtTransportType transport,
unsigned int numberAttrs);
1341 virtual void deleteAllOwnedObjects();
1344 virtual void deleteObj(
DtRtiObject* obj,
bool isLocalDelete=
false);
1349 virtual void retainTsoDeletedObj(
DtRtiObject* obj,
1350 rti1516::LogicalTime
const & time);
1355 virtual void retainTsoRemovedObj(
DtRtiObject* obj,
1356 rti1516::LogicalTime
const & time);
1357 #elif defined(DtIFSPEC1516E)
1360 virtual void retainTsoDeletedObj(
DtRtiObject* obj,
1366 virtual void retainTsoRemovedObj(
DtRtiObject* obj,
1371 virtual void retainTsoDeletedObj(
DtRtiObject* obj, RTI::FedTime
const & time);
1376 virtual void retainTsoRemovedObj(
DtRtiObject* obj,
1377 RTI::FedTime
const & time);
1386 virtual void removeObjectAssociations(
DtRtiObject&
object);
1391 virtual void collectRemoteSubscriptions(
DtRtiObject&
object);
1406 virtual unsigned long nextOffsetId();
1427 const DtAhvps& inSet,
1435 const char* objName,
1440 bool federateOwnsPrivilegeToDelete);
1450 virtual void calculateRegionSet(
1452 #elif defined(DtIFSPEC1516E)
1453 virtual void calculateRegionSet(
1456 virtual void calculateRegionSet(
1457 unsigned long channel,
const DtAhvps& reflectSet) {}
1469 virtual void acquireAssociateRegionForUpdates(
1474 virtual void unassociateRegionForDivested(
1484 rti1516::ObjectInstanceHandle objectHandle,
1489 rti1516::VariableLengthData
const & theTag,
1490 rti1516::LogicalTime
const * time=0,
1491 unsigned long serialNumber=0,
1493 #elif defined(DtIFSPEC1516E)
1495 rti1516e::ObjectInstanceHandle objectHandle,
1502 unsigned long serialNumber=0,
1507 DtAhvps
const& reflectedValues,
1510 char const * tag = 0,
1511 RTI::FedTime
const * time=0,
1512 unsigned long serialNumber=0);
1517 virtual bool acceptObjectChannel(
unsigned long channel);
1521 virtual bool acceptRequestChannel(
unsigned long channel);
1530 virtual void removeClassMulticast(
DtObjectClassInfo* classDesc,
float rate=-1.0);
1540 virtual void destroyObjectLists();
1543 virtual unsigned long savePacketLength();
1553 static void processUpdate(
const DtUpdateMsg& msg,
void* usr);
1556 #ifdef DtIFSPEC1516E
1559 static void processRegister(
const DtRegObjMsg& msg,
void* usr);
1561 static void processDiscover(
const DtDiscObjMsg& msg,
void* usr);
1562 static void processRequestDiscover(
const DtReqDiscObjMsg& msg,
void* usr);
1563 static void processDelete(
const DtDeleteRoMsg& msg,
void* usr);
1565 static void processDeleteTso(
const DtDeleteTsoMsg& msg,
void* usr);
1567 static void processLocDelete(
const DtLocDelMsg& msg,
void* usr);
1568 static void processPub(
const DtPubObjMsg& msg,
void* usr);
1569 static void processUnpub(
const DtUnpubObjMsg& msg,
void* usr);
1570 static void processSub(
const DtSubObjMsg& msg,
void* usr);
1571 static void processUnsub(
const DtUnsubObjMsg& msg,
void* usr);
1572 static void processRequest(
const DtRequestMsg& msg,
void* usr);
1573 static void processOwnership(
const DtOwnershipMsg& msg,
void* usr);
1574 #ifdef DtIFSPEC1516E
1632 DtObjectHandleTimeMap myTsoDeletedObjects;
1633 DtObjectPtrTimeMap myTsoDeletedObjectCache;
1634 DtObjectPtrTimeMap myTsoRemovedObjectCache;