9 #ifndef exerciseConnHLA_H_
10 #define exerciseConnHLA_H_
31 class DtInteractionFactory;
32 class DtHlaObjectFactory;
33 class DtInteractionManager;
34 class DtHlaObjectManager;
36 class DtVrlFederateAmbassador;
41 class DtVRLinkStateManager;
66 typedef DtVrlFederateAmbassador* (*DtFedAmbCreator)();
67 typedef DtFomMapper* (*DtFomMapperCreator)(
void* usr);
68 typedef void (*DtFomMapperDeletor)(DtFomMapper*);
70 typedef void (*DtRtiErrorCb)(
const char* label,
void* usr);
74 typedef DtVrlRtiAmbassador* (*DtRtiAmbCreator)(
const std::vector<std::wstring>&);
77 typedef DtTime (*DtLogicalTimeToVrlTimeConverter) (
const RTI::LogicalTime &theLogicalTime);
78 typedef std::unique_ptr<RTI::LogicalTime>(*DtVrlTimeToLogicalTimeConverter) (
const DtTime &time);
80 typedef DtTime (*DtFedTimeToVrlTimeConverter) (
const RTI::FedTime &theFedTIme);
81 typedef RTI::FedTime* (*DtVrlTimeToFedTimeConverter) (
const DtTime &time);
93 enum InitializationStatus {
95 DtCOULD_NOT_CREATE_RTIAMB = 1,
96 DtCOULD_NOT_CREATE_FEDEX = 2,
97 DtCOULD_NOT_JOIN_FEDEX = 3,
98 DtCOULD_NOT_OPEN_FED = 4,
99 DtCOULD_NOT_PARSE_FED = 5,
100 DtCOULD_NOT_FIND_FOMMAPPER = 6,
101 DtERROR_OPENING_FOMMAPPER_LIB = 7,
102 DtCOULD_NOT_CONNECT_RTIAMB = 8
124 const char* federateType,
125 DtFomMapper* mapper = defaultFomMapper(),
126 const char* fedFileName = 0,
127 InitializationStatus* status = 0
138 const char* federateType,
140 const char* fedFileName = 0,
141 void* fomMapInitData = 0,
142 InitializationStatus* status = 0
145 #if DtHLA_1516_EVOLVED
164 const char* federateName,
165 const char* federateType,
167 DtFomMapper* mapper = defaultFomMapper(),
169 const std::vector<DtString>& fomModules = std::vector<DtString>(),
170 InitializationStatus* status = 0 );
185 const char* federateName,
186 const char* federateType,
189 void* fomMapInitData = 0,
191 const std::vector<DtString>& fomModules = std::vector<DtString>(),
192 InitializationStatus* status = 0 );
217 virtual void setReflecting();
220 virtual bool reflecting()
const;
228 virtual void setPassiveMode();
231 virtual bool passiveMode()
const;
252 virtual void setReflectRemoteUpdatesIntoPubFlag(
bool onff);
255 virtual bool reflectRemoteUpdatesIntoPubFlag()
const;
261 virtual void setReflectingThroughRti();
264 virtual bool reflectingThroughRti()
const;
275 virtual void ignoreAdvisories();
278 virtual bool usingAdvisories()
const;
280 virtual void setRemoveObjectOnAttOutOfScope(
bool remove);
288 virtual bool enabledGenericAttributes()
const;
290 #if DtHLA_1516_EVOLVED
291 void listFederationExecutions();
312 const RTI::RegionHandleSet* region);
315 const RTI::Region* region);
334 DtDDMRegionSP region);
342 const RTI::RegionHandleSet* region);
345 const RTI::Region* region);
350 virtual DtTime currentTimeForStamping();
366 virtual int drainInput(
DtTime maxTime = -1,
DtTime minTime = 0.0);
376 virtual DtVrlRtiAmbassador* rtiAmb();
380 virtual DtVrlFederateAmbassador* fedAmb();
383 virtual RTI::FederateHandle fedHandle()
const;
386 virtual const DtString& fedType()
const;
388 #if DtHLA_1516_EVOLVED
389 virtual const DtString& fedName()
const;
395 virtual const DtString& execName()
const;
398 virtual bool isUsingMakRti()
const;
408 virtual DtString rtiVersion()
const;
415 virtual DtFom* fom();
418 virtual DtInteractionFactory* interactionFactory();
421 virtual DtHlaObjectFactory* objectFactory();
424 virtual DtFomMapper* fomMapper()
const;
427 virtual DtHlaObjectManager* hlaObjectManager();
439 virtual void addInteractionCallback(RTI::InteractionClassHandle h,
440 DtReceiveInteractionCb cb,
442 DtDDMRegionSP region = DtDDMRegionSP());
448 virtual void addInteractionCallbackByName(
const char* className,
449 DtReceiveInteractionCb cb,
451 DtDDMRegionSP region = DtDDMRegionSP());
457 virtual void removeInteractionCallback(RTI::InteractionClassHandle h,
458 DtReceiveInteractionCb cb,
460 DtDDMRegionSP region = DtDDMRegionSP());
466 virtual void removeInteractionCallbackByName(
const char* className,
467 DtReceiveInteractionCb cb,
468 void* usr, DtDDMRegionSP region = DtDDMRegionSP());
472 virtual void addDiscoverObjectCallback(RTI::ObjectClassHandle h,
473 DtDiscoverObjectCb cb,
479 virtual void removeDiscoverObjectCallback(RTI::ObjectClassHandle h,
480 DtDiscoverObjectCb cb,
485 virtual void addRemoveObjectCallback(
487 RTI::ObjectInstanceHandle
id,
489 RTI::ObjectHandle
id,
497 virtual void removeRemoveObjectCallback(
499 RTI::ObjectInstanceHandle
id,
501 RTI::ObjectHandle
id,
509 virtual void setDestroyFedExecFlag(
bool flag);
512 virtual bool destroyFedExecFlag();
517 virtual void setReplyingToSynchronizationPoints(
bool yesNo);
520 virtual bool replyingToSynchronizationPoints();
524 virtual void replyToSynchronizationPoint(
const char* label);
530 virtual void setAutoSubscribeFlag(
bool flag);
533 virtual bool autoSubscribeFlag()
const;
537 virtual void setSendFedTime(
bool flag);
540 virtual bool sendFedTime()
const;
549 virtual void setUseGeographicDdm(
bool flag);
553 virtual bool useGeographicDdm()
const;
555 virtual void setDeleteOnOutOfScope(
bool yesNo);
557 virtual bool deleteOnOutOfScope()
const;
560 virtual RTI::LogicalTimeFactory *logicalTimeFactory()
const;
567 virtual void registerSynchronizationPoint(
const DtString& label);
570 virtual void registerSynchronizationPoint(
573 const RTI::VariableLengthData& tag);
579 virtual void addFederateSaveCb(
const DtString& label,
580 DtFederateSaveCb func,
void* usr);
581 virtual void addFederateSaveCb(DtFederateSaveCb func,
void* usr);
584 virtual void addFederateRestoreCb(
const DtString& label,
585 DtFederateSaveCb func,
void* usr);
586 virtual void addFederateRestoreCb(DtFederateSaveCb func,
void* usr);
589 virtual void removeFederateSaveCb(
const DtString& label,
590 DtFederateSaveCb func,
void* usr);
591 virtual void removeFederateSaveCb(DtFederateSaveCb func,
void* usr);
594 virtual void removeFederateRestoreCb(
const DtString& label,
595 DtFederateSaveCb func,
void* usr);
596 virtual void removeFederateRestoreCb(DtFederateSaveCb func,
void* usr);
600 virtual void addSynchPointRegistrationSucceededCb(
const DtString& label,
601 DtSynchPointCb func,
void* usr);
604 virtual void addSynchPointRegistrationSucceededCb(DtSynchPointCb func,
609 virtual void removeSynchPointRegistrationSucceededCb(
const DtString& label,
610 DtSynchPointCb func,
void* usr);
613 virtual void removeSynchPointRegistrationSucceededCb(DtSynchPointCb func,
617 virtual void addSynchPointRegistrationFailedCb(
const DtString& label,
618 DtSynchPointCb func,
void* usr);
621 virtual void addSynchPointRegistrationFailedCb(DtSynchPointCb func,
625 virtual void removeSynchPointRegistrationFailedCb(
const DtString& label,
626 DtSynchPointCb func,
void* usr);
629 virtual void removeSynchPointRegistrationFailedCb(DtSynchPointCb func,
633 virtual void addFederationSynchedCb(
const DtString& label,
634 DtSynchPointCb func,
void* usr);
637 virtual void addFederationSynchedCb(DtSynchPointCb func,
641 virtual void removeFederationSynchedCb(
const DtString& label,
642 DtSynchPointCb func,
void* usr);
645 virtual void removeFederationSynchedCb(DtSynchPointCb func,
653 virtual void addRtiErrorCb(
const DtString& label, DtRtiErrorCb func,
655 virtual void removeRtiErrorCb(
const DtString& label, DtRtiErrorCb func,
657 virtual void addRtiErrorCb(DtRtiErrorCb func,
void* usr);
658 virtual void removeRtiErrorCb(DtRtiErrorCb func,
void* usr);
661 #if DtHLA_1516_EVOLVED
662 virtual void addConnectionLostCb(DtConnectionLostCb func,
666 virtual void removeConnectionLostCb(DtConnectionLostCb func,
void *usr);
672 virtual void addAnnounceSynchPointCb(
const DtString& label,
673 DtAnnounceSynchPointCb func,
void* usr);
678 virtual void addAnnounceSynchPointCb(DtAnnounceSynchPointCb func,
682 virtual void removeAnnounceSynchPointCb(
const DtString& label,
683 DtAnnounceSynchPointCb func,
void* usr);
686 virtual void removeAnnounceSynchPointCb(DtAnnounceSynchPointCb func,
713 virtual void setObjectTagModifier(
const DtString& className,
714 DtObjectTagModifierSP modifier,
bool applyToSubClasses =
true);
724 virtual void setInteractionTagModifier(
const DtString& className,
725 DtInteractionTagModifierSP modifier,
bool applyToSubClasses =
true);
739 virtual void setGetValueMethod( DtExerciseConnInitializer::DtGetValueMethod getValueMethodChoice );
740 virtual DtExerciseConnInitializer::DtGetValueMethod getValueMethod( )
const;
744 virtual void setExecutionStatus(DtVRLExecutionStatus status);
747 virtual bool isInitialized()
const;
752 static void setLogicalTimeFactoryFactoryParameter(std::wstring);
758 static std::wstring logicalTimeFactoryFactoryParameter();
760 static void setFedAmbCreator(DtFedAmbCreator creator);
766 static DtFedAmbCreator fedAmbCreator();
771 static void setRtiAmbCreator(DtRtiAmbCreator creator);
774 static DtRtiAmbCreator rtiAmbCreator();
780 static void overrideRidParameters(
const std::map<DtString, DtString>& ridParams);
790 static void setFomMapperCreator(DtFomMapperCreator creator,
794 static DtFomMapperCreator fomMapperCreator();
797 static DtFomMapper* defaultFomMapper();
807 static void setLogicalTimeToVrlTimeConverter(DtLogicalTimeToVrlTimeConverter func);
808 static DtLogicalTimeToVrlTimeConverter logicalTimeToVrlTimeConverter();
810 static void setFedTimeToVrlTimeConverter(DtFedTimeToVrlTimeConverter func);
811 static DtFedTimeToVrlTimeConverter fedTimeToVrlTimeConverter();
821 static void setVrlTimeToLogicalTimeConverter(DtVrlTimeToLogicalTimeConverter func);
822 static DtVrlTimeToLogicalTimeConverter vrlTimeToLogicalTimeConverter();
824 static void setVrlTimeToFedTimeConverter(DtVrlTimeToFedTimeConverter func);
825 static DtVrlTimeToFedTimeConverter vrlTimeToFedTimeConverter();
835 static DtTime defaultDtLogicalTimeToVrlTimeConverter(
const RTI::LogicalTime &time);
837 static DtTime defaultDtFedTimeToVrlTimeConverter(
const RTI::FedTime &time);
842 static std::unique_ptr<RTI::LogicalTime> defaultVrlTimeToLogicalTimeConverter(
845 static RTI::FedTime* defaultVrlTimeToFedTimeConverter(
const DtTime &time);
854 virtual bool callRtiErrorCallback(
DtString &label);
860 bool checkRtiVersionForPointerAlignment();
863 void initializeConnection(InitializationStatus* result);
867 void initializeFomMapper(
const char* dsoName,
void* fomMapInitData,
868 InitializationStatus* result);
874 DtFomMapperCreator* creator,
875 DtFomMapperDeletor* deletor);
880 void handleFedFile(
const DtString& fedFileName);
886 int initFom(InitializationStatus* result);
891 int createRtiAmb(InitializationStatus* result);
898 int connectRtiAmb(InitializationStatus* result);
904 int createFedEx(InitializationStatus* result);
908 int createFedAmb(InitializationStatus* result);
913 int joinFedEx(InitializationStatus* result);
918 bool fedFileExists(
const DtFilename &name)
const;
920 #if DtHLA_1516_EVOLVED
921 void setFomModules(
const std::vector<DtString>& modules);
926 void resignAndDisconnect();
933 virtual void rtiSend(
DtInteraction& msg, RTI::InteractionClassHandle handle,
934 const RTI::RegionHandleSet* region);
936 virtual void rtiSend(
DtInteraction& msg, RTI::InteractionClassHandle handle,
937 const RTI::Region* region);
942 virtual void selfReflectInteraction(
DtInteraction& msg, RTI::InteractionClassHandle handle,
943 const RTI::RegionHandleSet* region);
945 virtual void selfReflectInteraction(
DtInteraction& msg, RTI::InteractionClassHandle handle,
946 const RTI::Region* region);
952 static void replyToSyncPointCallback(
void* usr);
956 struct DtGeneralRtiErrorCbInfo
958 DtRtiErrorCb cbFunction;
962 struct DtLabelledRtiErrorCbInfo
965 DtRtiErrorCb cbFunction;
972 #if DtHLA_1516_EVOLVED
980 std::unique_ptr<RTI::LogicalTimeFactory> myLogicalTimeFactory;
982 std::unique_ptr<RTI::LogicalTimeFactory> myLogicalTimeFactory;
984 DtVrlRtiAmbassador* myRtiAmb;
985 RTI::FederateHandle myFedHandle;
986 DtVrlFederateAmbassador* myFedAmb;
990 DtHlaObjectManager* myHlaObjectManager;
991 DtInteractionManager* myInteractionManager;
994 DtFomMapper* myFomMapper;
996 DtFomMapperCreator myDsoCreator;
997 DtFomMapperDeletor myDsoDeletor;
1002 bool myDestroyFedExFlag;
1003 bool myUseFomMapperDeletor;
1005 bool myGenericAttributes;
1008 bool myReflectRemoteUpdatesIntoPubFlag;
1009 bool myReflectingThroughRti;
1010 bool myReplyingToSynchronizationPoints;
1011 bool myUsingAdvisories;
1012 bool myAutoSubscribeFlag;
1013 bool mySendFedTimeFlag;
1014 DtExerciseConnInitializer::DtGetValueMethod myGetValueMethod;
1015 bool myPauseOnSaveRestore;
1017 bool myUseGeographicDdm;
1018 bool myDeleteOnOutOfScope;
1019 #if DtHLA_1516_EVOLVED
1030 #if DtHLA_1516_EVOLVED
1031 std::vector<std::wstring> myFomModules;
1032 std::wstring myMimFomModule;
1034 std::wstring myLocalSettingsDesignator;
1036 std::vector<std::wstring> myRtiArguments;
1040 RTI::VariableLengthData myTag;
1055 std::list<DtGeneralRtiErrorCbInfo> myRtiErrorCbList;
1056 std::list<DtLabelledRtiErrorCbInfo> myLabRtiErrorCbList;
1058 DtVRLinkStateManager* myVrlStateManager;
1062 static std::wstring myLogicalTimeFactFactParam;
1063 static DtFedAmbCreator theFedAmbCreator;
1064 static DtRtiAmbCreator theRtiAmbCreator;
1065 static DtFomMapperCreator theFomMapperCreator;
1066 static DtFomMapper* theDefaultFomMapper;
1067 static void* theFomMapInitData;
1069 static DtVrlTimeToLogicalTimeConverter theVrlTimeToLogicalTimeConverter;
1070 static DtLogicalTimeToVrlTimeConverter theLogicalTimeToVrlTimeConverter;
1072 static DtVrlTimeToFedTimeConverter theVrlTimeToFedTimeConverter;
1073 static DtFedTimeToVrlTimeConverter theFedTimeToVrlTimeConverter;
1078 inline DtVrlRtiAmbassador* DtExerciseConn::rtiAmb()
1083 inline DtVrlFederateAmbassador* DtExerciseConn::fedAmb()
1088 inline DtHlaObjectManager* DtExerciseConn::hlaObjectManager()
1090 return myHlaObjectManager;
1093 inline DtFom* DtExerciseConn::fom()
1098 inline RTI::FederateHandle DtExerciseConn::fedHandle()
const
1103 #if DtHLA_1516_EVOLVED
1104 inline const DtString& DtExerciseConn::fedName()
const
1110 inline const DtString& DtExerciseConn::fedType()
const
1115 inline const DtString& DtExerciseConn::execName()
const
1121 inline void DtExerciseConn::setSendFedTime(
bool flag)
1123 mySendFedTimeFlag = flag;
1126 inline bool DtExerciseConn::sendFedTime()
const
1128 return mySendFedTimeFlag;
1131 inline void DtExerciseConn::setUseGeographicDdm(
bool flag)
1133 myUseGeographicDdm = flag;
1136 inline bool DtExerciseConn::useGeographicDdm()
const
1138 return myUseGeographicDdm;
1141 inline void DtExerciseConn::setDeleteOnOutOfScope(
bool yesNo)
1143 myDeleteOnOutOfScope = yesNo;
1146 inline bool DtExerciseConn::deleteOnOutOfScope()
const
1148 return myDeleteOnOutOfScope;
DtInteraction is an base class for representing DIS PDUs which don't have state.
Definition: interactionDIS.h:24
Contains the HLA DtExerciseConnInitializer class declaration.
Instances of DtExerciseConn are used to provide an application's interface or connection to the netwo...
Definition: exerciseConnDIS.h:62
A protocol independent (HLA13/HLA1516/HLA1516e/HLA1516_2025) file for the VR-Link FedAmb...
#define DT_DLL_VL
Definition: vlMachineTypes.h:108
Instances of DtExerciseConnInitializer are used to provide the DtExerciseConn with initialization dat...
Definition: exerciseConnInitializerDIS.h:36
DtBaseExerciseConn & operator=(const DtBaseExerciseConn &)
Assignment Operator – Not Implemented.
DtBaseExerciseConn is an abstract base class.
Definition: baseExerciseConn.h:31
This file provides a definition of GeodeticCoords and several helper functions.
Instances of DtGeodeticCoord are used to explicitly represent Geodetic coordinates.
Definition: geodeticCoord.h:30
This file declares macros which specify the VR-Link version.
virtual void sendStamped(const DtStateMsg &msg)=0
Send a state message to the network which has been time stamped with the current time.
Contains the DtVRLinkStateStateRepository class declaration.
Contains the DtRprFomMapper class declaration.
virtual void send(const DtStateMsg &msg)=0
Send a state message to the network.
Represents Events in DIS.
Definition: eventId.h:154
Instances of DtEntityIdentifier are used as a unique ID for entities in DIS.
Definition: entityIdentifier.h:31
Instances of DtFilename are DtStrings which convert filenames to the native format.
Definition: vlFilename.h:20
Contains the DtNetnFomMapper class declaration.
This is a base class meant to encapsulate user callbacks on ownership management services.
Definition: ownershipHandlerDIS.h:39
DtDynamicLibrary provides an operating independent way to manipulate dynamically loaded libraries...
Definition: vlDynamic.h:23
DtTimeStampType
Definition: vlTimeStampType.h:16
DtReal DtTime
A definition of DtTime.
Definition: vlTime.h:19
Contains the DtEventId class declaration.
Instances of DtString are used to represent strings.
Definition: vlString.h:36
This file provides protocol independence for the DtVrlRtiAmbassador class.
This file provides a declaration of the class DtBaseExerciseConn.
Instances of DtStateMsg are used to represent state data communicated via the network in a DIS (as op...
Definition: stateMsgDIS.h:21
This file is used as a convenience to group RTI related callbacks together.
This file contains declarations of the classes DtObjectTagModifier and DtInteractionTagModifier.