9 #ifndef exerciseConnHLA_H_
10 #define exerciseConnHLA_H_
30 class DtInteractionFactory;
31 class DtHlaObjectFactory;
32 class DtInteractionManager;
33 class DtHlaObjectManager;
35 class DtVrlFederateAmbassador;
40 class DtVRLinkStateManager;
65 typedef DtVrlFederateAmbassador* (*DtFedAmbCreator)();
66 typedef DtFomMapper* (*DtFomMapperCreator)(
void* usr);
67 typedef void (*DtFomMapperDeletor)(DtFomMapper*);
69 typedef void (*DtRtiErrorCb)(
const char* label,
void* usr);
73 typedef DtVrlRtiAmbassador* (*DtRtiAmbCreator)(
const std::vector<std::wstring>&);
76 typedef DtTime (*DtLogicalTimeToVrlTimeConverter) (
const RTI::LogicalTime &theLogicalTime);
77 typedef std::auto_ptr<RTI::LogicalTime>(*DtVrlTimeToLogicalTimeConverter) (
const DtTime &time);
79 typedef DtTime (*DtFedTimeToVrlTimeConverter) (
const RTI::FedTime &theFedTIme);
80 typedef RTI::FedTime* (*DtVrlTimeToFedTimeConverter) (
const DtTime &time);
92 enum InitializationStatus {
94 DtCOULD_NOT_CREATE_RTIAMB = 1,
95 DtCOULD_NOT_CREATE_FEDEX = 2,
96 DtCOULD_NOT_JOIN_FEDEX = 3,
97 DtCOULD_NOT_OPEN_FED = 4,
98 DtCOULD_NOT_PARSE_FED = 5,
99 DtCOULD_NOT_FIND_FOMMAPPER = 6,
100 DtERROR_OPENING_FOMMAPPER_LIB = 7,
101 DtCOULD_NOT_CONNECT_RTIAMB = 8
123 const char* federateType,
124 DtFomMapper* mapper = DtRprFomMapper::create(0),
125 const char* fedFileName = 0,
126 InitializationStatus* status = 0
137 const char* federateType,
139 const char* fedFileName = 0,
140 void* fomMapInitData = 0,
141 InitializationStatus* status = 0
144 #if DtHLA_1516_EVOLVED
163 const char* federateName,
164 const char* federateType,
166 DtFomMapper* mapper = DtRprFomMapper::create(0),
168 const std::vector<DtString>& fomModules = std::vector<DtString>(),
169 InitializationStatus* status = 0 );
184 const char* federateName,
185 const char* federateType,
188 void* fomMapInitData = 0,
190 const std::vector<DtString>& fomModules = std::vector<DtString>(),
191 InitializationStatus* status = 0 );
216 virtual void setReflecting();
219 virtual bool reflecting()
const;
227 virtual void setPassiveMode();
230 virtual bool passiveMode()
const;
251 virtual void setReflectRemoteUpdatesIntoPubFlag(
bool onff);
254 virtual bool reflectRemoteUpdatesIntoPubFlag()
const;
260 virtual void setReflectingThroughRti();
263 virtual bool reflectingThroughRti()
const;
274 virtual void ignoreAdvisories();
277 virtual bool usingAdvisories()
const;
279 virtual void setRemoveObjectOnAttOutOfScope(
bool remove);
287 virtual bool enabledGenericAttributes()
const;
289 #if DtHLA_1516_EVOLVED
290 void listFederationExecutions();
311 const RTI::RegionHandleSet* region);
314 const RTI::Region* region);
333 DtDDMRegionSP region);
341 const RTI::RegionHandleSet* region);
344 const RTI::Region* region);
349 virtual DtTime currentTimeForStamping();
365 virtual int drainInput(
DtTime maxTime = -1,
DtTime minTime = 0.0);
375 virtual DtVrlRtiAmbassador* rtiAmb();
379 virtual DtVrlFederateAmbassador* fedAmb();
382 virtual RTI::FederateHandle fedHandle()
const;
385 virtual const DtString& fedType()
const;
387 #if DtHLA_1516_EVOLVED
388 virtual const DtString& fedName()
const;
394 virtual const DtString& execName()
const;
397 virtual bool isUsingMakRti()
const;
407 virtual DtString rtiVersion()
const;
414 virtual DtFom* fom();
417 virtual DtInteractionFactory* interactionFactory();
420 virtual DtHlaObjectFactory* objectFactory();
423 virtual DtFomMapper* fomMapper()
const;
426 virtual DtHlaObjectManager* hlaObjectManager();
438 virtual void addInteractionCallback(RTI::InteractionClassHandle h,
439 DtReceiveInteractionCb cb,
441 DtDDMRegionSP region = DtDDMRegionSP());
447 virtual void addInteractionCallbackByName(
const char* className,
448 DtReceiveInteractionCb cb,
450 DtDDMRegionSP region = DtDDMRegionSP());
456 virtual void removeInteractionCallback(RTI::InteractionClassHandle h,
457 DtReceiveInteractionCb cb,
459 DtDDMRegionSP region = DtDDMRegionSP());
465 virtual void removeInteractionCallbackByName(
const char* className,
466 DtReceiveInteractionCb cb,
467 void* usr, DtDDMRegionSP region = DtDDMRegionSP());
471 virtual void addDiscoverObjectCallback(RTI::ObjectClassHandle h,
472 DtDiscoverObjectCb cb,
478 virtual void removeDiscoverObjectCallback(RTI::ObjectClassHandle h,
479 DtDiscoverObjectCb cb,
484 virtual void addRemoveObjectCallback(
486 RTI::ObjectInstanceHandle
id,
488 RTI::ObjectHandle
id,
496 virtual void removeRemoveObjectCallback(
498 RTI::ObjectInstanceHandle
id,
500 RTI::ObjectHandle
id,
508 virtual void setDestroyFedExecFlag(
bool flag);
511 virtual bool destroyFedExecFlag();
516 virtual void setReplyingToSynchronizationPoints(
bool yesNo);
519 virtual bool replyingToSynchronizationPoints();
523 virtual void replyToSynchronizationPoint(
const char* label);
529 virtual void setAutoSubscribeFlag(
bool flag);
532 virtual bool autoSubscribeFlag()
const;
536 virtual void setSendFedTime(
bool flag);
539 virtual bool sendFedTime()
const;
548 virtual void setUseGeographicDdm(
bool flag);
552 virtual bool useGeographicDdm()
const;
554 virtual void setDeleteOnOutOfScope(
bool yesNo);
556 virtual bool deleteOnOutOfScope()
const;
559 virtual RTI::LogicalTimeFactory *logicalTimeFactory()
const;
566 virtual void registerSynchronizationPoint(
const DtString& label);
569 virtual void registerSynchronizationPoint(
572 const RTI::VariableLengthData& tag);
578 virtual void addFederateSaveCb(
const DtString& label,
579 DtFederateSaveCb func,
void* usr);
580 virtual void addFederateSaveCb(DtFederateSaveCb func,
void* usr);
583 virtual void addFederateRestoreCb(
const DtString& label,
584 DtFederateSaveCb func,
void* usr);
585 virtual void addFederateRestoreCb(DtFederateSaveCb func,
void* usr);
588 virtual void removeFederateSaveCb(
const DtString& label,
589 DtFederateSaveCb func,
void* usr);
590 virtual void removeFederateSaveCb(DtFederateSaveCb func,
void* usr);
593 virtual void removeFederateRestoreCb(
const DtString& label,
594 DtFederateSaveCb func,
void* usr);
595 virtual void removeFederateRestoreCb(DtFederateSaveCb func,
void* usr);
599 virtual void addSynchPointRegistrationSucceededCb(
const DtString& label,
600 DtSynchPointCb func,
void* usr);
603 virtual void addSynchPointRegistrationSucceededCb(DtSynchPointCb func,
608 virtual void removeSynchPointRegistrationSucceededCb(
const DtString& label,
609 DtSynchPointCb func,
void* usr);
612 virtual void removeSynchPointRegistrationSucceededCb(DtSynchPointCb func,
616 virtual void addSynchPointRegistrationFailedCb(
const DtString& label,
617 DtSynchPointCb func,
void* usr);
620 virtual void addSynchPointRegistrationFailedCb(DtSynchPointCb func,
624 virtual void removeSynchPointRegistrationFailedCb(
const DtString& label,
625 DtSynchPointCb func,
void* usr);
628 virtual void removeSynchPointRegistrationFailedCb(DtSynchPointCb func,
632 virtual void addFederationSynchedCb(
const DtString& label,
633 DtSynchPointCb func,
void* usr);
636 virtual void addFederationSynchedCb(DtSynchPointCb func,
640 virtual void removeFederationSynchedCb(
const DtString& label,
641 DtSynchPointCb func,
void* usr);
644 virtual void removeFederationSynchedCb(DtSynchPointCb func,
652 virtual void addRtiErrorCb(
const DtString& label, DtRtiErrorCb func,
654 virtual void removeRtiErrorCb(
const DtString& label, DtRtiErrorCb func,
656 virtual void addRtiErrorCb(DtRtiErrorCb func,
void* usr);
657 virtual void removeRtiErrorCb(DtRtiErrorCb func,
void* usr);
660 #if DtHLA_1516_EVOLVED
661 virtual void addConnectionLostCb(DtConnectionLostCb func,
665 virtual void removeConnectionLostCb(DtConnectionLostCb func,
void *usr);
671 virtual void addAnnounceSynchPointCb(
const DtString& label,
672 DtAnnounceSynchPointCb func,
void* usr);
677 virtual void addAnnounceSynchPointCb(DtAnnounceSynchPointCb func,
681 virtual void removeAnnounceSynchPointCb(
const DtString& label,
682 DtAnnounceSynchPointCb func,
void* usr);
685 virtual void removeAnnounceSynchPointCb(DtAnnounceSynchPointCb func,
712 virtual void setObjectTagModifier(
const DtString& className,
713 DtObjectTagModifierSP modifier,
bool applyToSubClasses =
true);
723 virtual void setInteractionTagModifier(
const DtString& className,
724 DtInteractionTagModifierSP modifier,
bool applyToSubClasses =
true);
738 virtual void setGetValueMethod( DtExerciseConnInitializer::DtGetValueMethod getValueMethodChoice );
739 virtual DtExerciseConnInitializer::DtGetValueMethod getValueMethod( )
const;
743 virtual void setExecutionStatus(DtVRLExecutionStatus status);
746 virtual bool isInitialized()
const;
751 static void setLogicalTimeFactoryFactoryParameter(std::wstring);
757 static std::wstring logicalTimeFactoryFactoryParameter();
759 static void setFedAmbCreator(DtFedAmbCreator creator);
765 static DtFedAmbCreator fedAmbCreator();
770 static void setRtiAmbCreator(DtRtiAmbCreator creator);
773 static DtRtiAmbCreator rtiAmbCreator();
779 static void overrideRidParameters(
const std::map<DtString, DtString>& ridParams);
789 static void setFomMapperCreator(DtFomMapperCreator creator,
793 static DtFomMapperCreator fomMapperCreator();
803 static void setLogicalTimeToVrlTimeConverter(DtLogicalTimeToVrlTimeConverter func);
804 static DtLogicalTimeToVrlTimeConverter logicalTimeToVrlTimeConverter();
806 static void setFedTimeToVrlTimeConverter(DtFedTimeToVrlTimeConverter func);
807 static DtFedTimeToVrlTimeConverter fedTimeToVrlTimeConverter();
817 static void setVrlTimeToLogicalTimeConverter(DtVrlTimeToLogicalTimeConverter func);
818 static DtVrlTimeToLogicalTimeConverter vrlTimeToLogicalTimeConverter();
820 static void setVrlTimeToFedTimeConverter(DtVrlTimeToFedTimeConverter func);
821 static DtVrlTimeToFedTimeConverter vrlTimeToFedTimeConverter();
831 static DtTime defaultDtLogicalTimeToVrlTimeConverter(
const RTI::LogicalTime &time);
833 static DtTime defaultDtFedTimeToVrlTimeConverter(
const RTI::FedTime &time);
838 static std::auto_ptr<RTI::LogicalTime> defaultVrlTimeToLogicalTimeConverter(
841 static RTI::FedTime* defaultVrlTimeToFedTimeConverter(
const DtTime &time);
850 virtual bool callRtiErrorCallback(
DtString &label);
856 bool checkRtiVersionForPointerAlignment();
859 void initializeConnection(InitializationStatus* result);
863 void initializeFomMapper(
const char* dsoName,
void* fomMapInitData,
864 InitializationStatus* result);
870 DtFomMapperCreator* creator,
871 DtFomMapperDeletor* deletor);
876 void handleFedFile(
const DtString& fedFileName);
882 int initFom(InitializationStatus* result);
887 int createRtiAmb(InitializationStatus* result);
894 int connectRtiAmb(InitializationStatus* result);
900 int createFedEx(InitializationStatus* result);
904 int createFedAmb(InitializationStatus* result);
909 int joinFedEx(InitializationStatus* result);
914 bool fedFileExists(
const DtFilename &name)
const;
916 #if DtHLA_1516_EVOLVED
917 void setFomModules(
const std::vector<DtString>& modules);
922 void resignAndDisconnect();
929 virtual void rtiSend(
DtInteraction& msg, RTI::InteractionClassHandle handle,
930 const RTI::RegionHandleSet* region);
932 virtual void rtiSend(
DtInteraction& msg, RTI::InteractionClassHandle handle,
933 const RTI::Region* region);
938 virtual void selfReflectInteraction(
DtInteraction& msg, RTI::InteractionClassHandle handle,
939 const RTI::RegionHandleSet* region);
941 virtual void selfReflectInteraction(
DtInteraction& msg, RTI::InteractionClassHandle handle,
942 const RTI::Region* region);
948 static void replyToSyncPointCallback(
void* usr);
952 struct DtGeneralRtiErrorCbInfo
954 DtRtiErrorCb cbFunction;
958 struct DtLabelledRtiErrorCbInfo
961 DtRtiErrorCb cbFunction;
968 #if DtHLA_1516_EVOLVED
976 std::auto_ptr<RTI::LogicalTimeFactory> myLogicalTimeFactory;
978 DtVrlRtiAmbassador* myRtiAmb;
979 RTI::FederateHandle myFedHandle;
980 DtVrlFederateAmbassador* myFedAmb;
984 DtHlaObjectManager* myHlaObjectManager;
985 DtInteractionManager* myInteractionManager;
988 DtFomMapper* myFomMapper;
990 DtFomMapperCreator myDsoCreator;
991 DtFomMapperDeletor myDsoDeletor;
996 bool myDestroyFedExFlag;
997 bool myUseFomMapperDeletor;
999 bool myGenericAttributes;
1002 bool myReflectRemoteUpdatesIntoPubFlag;
1003 bool myReflectingThroughRti;
1004 bool myReplyingToSynchronizationPoints;
1005 bool myUsingAdvisories;
1006 bool myAutoSubscribeFlag;
1007 bool mySendFedTimeFlag;
1008 DtExerciseConnInitializer::DtGetValueMethod myGetValueMethod;
1009 bool myPauseOnSaveRestore;
1011 bool myUseGeographicDdm;
1012 bool myDeleteOnOutOfScope;
1013 #if DtHLA_1516_EVOLVED
1024 #if DtHLA_1516_EVOLVED
1025 std::vector<std::wstring> myFomModules;
1026 std::wstring myMimFomModule;
1028 std::wstring myLocalSettingsDesignator;
1030 std::vector<std::wstring> myRtiArguments;
1034 RTI::VariableLengthData myTag;
1049 std::list<DtGeneralRtiErrorCbInfo> myRtiErrorCbList;
1050 std::list<DtLabelledRtiErrorCbInfo> myLabRtiErrorCbList;
1052 DtVRLinkStateManager* myVrlStateManager;
1056 static std::wstring myLogicalTimeFactFactParam;
1057 static DtFedAmbCreator theFedAmbCreator;
1058 static DtRtiAmbCreator theRtiAmbCreator;
1059 static DtFomMapperCreator theFomMapperCreator;
1060 static void* theFomMapInitData;
1062 static DtVrlTimeToLogicalTimeConverter theVrlTimeToLogicalTimeConverter;
1063 static DtLogicalTimeToVrlTimeConverter theLogicalTimeToVrlTimeConverter;
1065 static DtVrlTimeToFedTimeConverter theVrlTimeToFedTimeConverter;
1066 static DtFedTimeToVrlTimeConverter theFedTimeToVrlTimeConverter;
1071 inline DtVrlRtiAmbassador* DtExerciseConn::rtiAmb()
1076 inline DtVrlFederateAmbassador* DtExerciseConn::fedAmb()
1081 inline DtHlaObjectManager* DtExerciseConn::hlaObjectManager()
1083 return myHlaObjectManager;
1086 inline DtFom* DtExerciseConn::fom()
1091 inline RTI::FederateHandle DtExerciseConn::fedHandle()
const
1096 #if DtHLA_1516_EVOLVED
1097 inline const DtString& DtExerciseConn::fedName()
const
1103 inline const DtString& DtExerciseConn::fedType()
const
1108 inline const DtString& DtExerciseConn::execName()
const
1114 inline void DtExerciseConn::setSendFedTime(
bool flag)
1116 mySendFedTimeFlag = flag;
1119 inline bool DtExerciseConn::sendFedTime()
const
1121 return mySendFedTimeFlag;
1124 inline void DtExerciseConn::setUseGeographicDdm(
bool flag)
1126 myUseGeographicDdm = flag;
1129 inline bool DtExerciseConn::useGeographicDdm()
const
1131 return myUseGeographicDdm;
1134 inline void DtExerciseConn::setDeleteOnOutOfScope(
bool yesNo)
1136 myDeleteOnOutOfScope = yesNo;
1139 inline bool DtExerciseConn::deleteOnOutOfScope()
const
1141 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:61
A protocol independent (HLA13/HLA1516) 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
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:29
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.