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);
935 virtual void provideAttrValueUpdate(
const DtRtiObject* obj,
937 rti1516::VariableLengthData
const & tag);
938 #elif defined(DtIFSPEC1516E)
939 virtual void provideAttrValueUpdate(
const DtRtiObject* obj,
943 virtual void provideAttrValueUpdate(
const DtRtiObject* obj,
950 virtual void remoteSubscribe(
957 virtual void remotePassiveSubscribe(
965 virtual void remoteUnsubscribe(
972 virtual void setDiscoveredClass(
DtRtiObject&
object,
977 virtual void processUpdate(
const DtUpdateMsg& msg);
983 virtual void processRegister(
const DtRegObjMsg& msg);
989 virtual void processDeleteTso(
const DtDeleteTsoMsg& msg);
991 virtual void processLocDelete(
const DtLocDelMsg& msg);
1006 virtual void processAcquire(
1009 rti1516::VariableLengthData
const & tag);
1010 #elif defined(DtIFSPEC1516E)
1011 virtual void processAcquire(
1016 virtual void processAcquire(
1023 virtual void processCancelAcquire(
1029 virtual void processConfirmCancelAcquire(
1039 #elif defined(DtIFSPEC1516E)
1062 virtual void processNotifyAcquire(
1066 bool forceAcquire=
false);
1067 #elif defined(DtIFSPEC1516E)
1068 virtual void processNotifyAcquire(
1072 bool forceAcquire=
false);
1074 virtual void processNotifyAcquire(
1078 bool forceAcquire=
false);
1082 virtual void processNotifyAcquireForDirectedMessaging(
1092 rti1516::VariableLengthData
const & tag,
1094 #elif defined(DtIFSPEC1516E)
1118 bool isPassive,
bool replacement,
1121 bool isPassive,
bool replacement,
1136 virtual void sendReserveNameMsg(std::string
const & theObjectInstanceName);
1137 #if defined (DtIFSPEC1516) || defined(DtIFSPEC1516E)
1139 virtual void sendBestEffortUpdateMsg(
1141 RTI_IFSPEC::LogicalTime
const * theTime,
1142 RTI_IFSPEC::VariableLengthData
const & tag,
1143 unsigned long serialNumber,
const MAKRti::DtInetAddr& destAddr,
1144 unsigned int offset=0);
1146 virtual void sendReliableUpdateMsg(
1149 RTI_IFSPEC::LogicalTime
const * theTime,
1150 RTI_IFSPEC::VariableLengthData
const & tag,
1151 unsigned long serialNumber);
1156 RTI_IFSPEC::LogicalTime
const * theTime,
1157 RTI_IFSPEC::VariableLengthData
const & tag);
1159 virtual void sendOwnershipMsg(
1165 virtual void sendOwnershipMsg(
1172 #if defined(DtIFSPEC1516E)
1174 virtual void sendAttrQueryFoundMsg(
1178 DtTransportType transType );
1180 virtual void sendInterQueryFoundMsg(
1184 DtTransportType transType );
1186 void sendInterQueryMsg(
1191 #elif defined(DtIFSPEC13)
1192 virtual void sendBestEffortUpdateMsg(
1194 RTI::FedTime
const * theTime,
1196 unsigned long serialNumber,
const MAKRti::DtInetAddr& destAddr,
1197 unsigned int offset=0);
1199 virtual void sendReliableUpdateMsg(
1202 RTI::FedTime
const * theTime,
1204 unsigned long serialNumber);
1206 virtual void sendRequestMsg(
1216 RTI::FedTime
const * theTime,
1219 virtual void sendOwnershipMsg(
1225 virtual void sendOwnershipMsg(
1234 virtual void sendPendingStartUpdates();
1237 virtual void sendPendingStopUpdates();
1240 virtual void sendPendingStartReg();
1243 virtual void sendPendingStopReg();
1246 virtual void sendPendingRegister();
1249 virtual void sendPendingSubscription();
1252 virtual void sendPendingRemovals();
1255 virtual void sendPendingRequestAttributes();
1258 virtual void sendPendingDiscoveries();
1261 virtual void invokePendingDivestNotification();
1264 virtual void purgeDeletedObjects();
1266 #if defined(DtIFSPEC1516) || defined(DtIFSPEC1516E)
1268 virtual void resetNameReservation(std::string objectName);
1271 virtual void resetNameUsed(std::string objectName);
1276 virtual void throwIfAcquisitionPending(
1280 #if defined(DtIFSPEC1516) || defined(DtIFSPEC1516E)
1283 virtual void confirmAllInstancesPendingDivestitures(
1289 virtual void confirmPendingDivestitures(
1296 virtual void cancelPendingConfirms(
1303 virtual void divestAllInstances(
1309 virtual void divestAllInstances();
1313 virtual void releaseAllAttributes(
DtRtiObject*
object);
1317 virtual void releaseOwnership(
1322 virtual void sendUpdateMessage(
DtUpdateMsg* update,
1324 MAKRti::DtTransportType trans,
unsigned int numberAttrs,
1325 MAKRti::DtInetAddr destAddr = DtInetAddr::inaddrAny(),
1326 unsigned int offset = 0);
1331 virtual void incrementUpdateTally(
DtHandle objectClass);
1332 virtual void incrementSentAttributesTally(
DtHandle objectClass,
1333 MAKRti::DtTransportType transport,
unsigned int numberAttrs);
1334 virtual void incrementReceivedTally(
DtHandle objectClass,
1335 MAKRti::DtTransportType transport,
unsigned int numberAttrs);
1340 virtual void deleteAllOwnedObjects();
1343 virtual void deleteObj(
DtRtiObject* obj,
bool isLocalDelete=
false);
1348 virtual void retainTsoDeletedObj(
DtRtiObject* obj,
1349 rti1516::LogicalTime
const & time);
1354 virtual void retainTsoRemovedObj(
DtRtiObject* obj,
1355 rti1516::LogicalTime
const & time);
1356 #elif defined(DtIFSPEC1516E)
1359 virtual void retainTsoDeletedObj(
DtRtiObject* obj,
1365 virtual void retainTsoRemovedObj(
DtRtiObject* obj,
1370 virtual void retainTsoDeletedObj(
DtRtiObject* obj, RTI::FedTime
const & time);
1375 virtual void retainTsoRemovedObj(
DtRtiObject* obj,
1376 RTI::FedTime
const & time);
1385 virtual void removeObjectAssociations(
DtRtiObject&
object);
1390 virtual void collectRemoteSubscriptions(
DtRtiObject&
object);
1397 virtual unsigned long nextOffsetId();
1417 const DtAhvps& inSet,
1425 const char* objName,
1430 bool federateOwnsPrivilegeToDelete);
1440 virtual void calculateRegionSet(
1442 #elif defined(DtIFSPEC1516E)
1443 virtual void calculateRegionSet(
1446 virtual void calculateRegionSet(
1447 unsigned long channel,
const DtAhvps& reflectSet) {}
1459 virtual void acquireAssociateRegionForUpdates(
1464 virtual void unassociateRegionForDivested(
1474 rti1516::ObjectInstanceHandle objectHandle,
1479 rti1516::VariableLengthData
const & theTag,
1480 rti1516::LogicalTime
const * time=0,
1481 unsigned long serialNumber=0,
1483 #elif defined(DtIFSPEC1516E)
1485 rti1516e::ObjectInstanceHandle objectHandle,
1492 unsigned long serialNumber=0,
1497 DtAhvps
const& reflectedValues,
1500 char const * tag = 0,
1501 RTI::FedTime
const * time=0,
1502 unsigned long serialNumber=0);
1507 virtual bool acceptObjectChannel(
unsigned long channel);
1511 virtual bool acceptRequestChannel(
unsigned long channel);
1520 virtual void removeClassMulticast(
DtObjectClassInfo* classDesc,
float rate=-1.0);
1530 virtual void destroyObjectLists();
1533 virtual unsigned long savePacketLength();
1543 static void processUpdate(
const DtUpdateMsg& msg,
void* usr);
1546 #ifdef DtIFSPEC1516E
1549 static void processRegister(
const DtRegObjMsg& msg,
void* usr);
1551 static void processDiscover(
const DtDiscObjMsg& msg,
void* usr);
1552 static void processRequestDiscover(
const DtReqDiscObjMsg& msg,
void* usr);
1553 static void processDelete(
const DtDeleteRoMsg& msg,
void* usr);
1555 static void processDeleteTso(
const DtDeleteTsoMsg& msg,
void* usr);
1557 static void processLocDelete(
const DtLocDelMsg& msg,
void* usr);
1558 static void processPub(
const DtPubObjMsg& msg,
void* usr);
1559 static void processUnpub(
const DtUnpubObjMsg& msg,
void* usr);
1560 static void processSub(
const DtSubObjMsg& msg,
void* usr);
1561 static void processUnsub(
const DtUnsubObjMsg& msg,
void* usr);
1562 static void processRequest(
const DtRequestMsg& msg,
void* usr);
1563 static void processOwnership(
const DtOwnershipMsg& msg,
void* usr);
1564 #ifdef DtIFSPEC1516E
1622 DtObjectHandleTimeMap myTsoDeletedObjects;
1623 DtObjectPtrTimeMap myTsoDeletedObjectCache;
1624 DtObjectPtrTimeMap myTsoRemovedObjectCache;