9 #ifndef hExerciseConn_H_
10 #define hExerciseConn_H_
28 class DtInteractionFactory;
29 class DtHlaObjectFactory;
30 class DtInteractionManager;
31 class DtHlaObjectManager;
33 class DtVrlFederateAmbassador;
63 typedef DtVrlFederateAmbassador* (*DtFedAmbCreator)();
64 typedef DtFomMapper* (*DtFomMapperCreator)(
void* usr);
65 typedef void (*DtFomMapperDeletor)(DtFomMapper*);
69 typedef DtVrlRtiAmbassador* (*DtRtiAmbCreator)(
const std::vector<std::wstring>&);
72 typedef DtTime (*DtLogicalTimeToVrlTimeConverter) (
const RTI::LogicalTime &theLogicalTime);
73 typedef std::auto_ptr<RTI::LogicalTime>(*DtVrlTimeToLogicalTimeConverter) (
const DtTime &time);
75 typedef DtTime (*DtFedTimeToVrlTimeConverter) (
const RTI::FedTime &theFedTIme);
76 typedef RTI::FedTime* (*DtVrlTimeToFedTimeConverter) (
const DtTime &time);
88 enum InitializationStatus {
90 DtCOULD_NOT_CREATE_RTIAMB = 1,
91 DtCOULD_NOT_CREATE_FEDEX = 2,
92 DtCOULD_NOT_JOIN_FEDEX = 3,
93 DtCOULD_NOT_OPEN_FED = 4,
94 DtCOULD_NOT_PARSE_FED = 5,
95 DtCOULD_NOT_FIND_FOMMAPPER = 6,
96 DtERROR_OPENING_FOMMAPPER_LIB = 7,
97 DtCOULD_NOT_CONNECT_RTIAMB = 8
119 const char* federateType,
120 DtFomMapper* mapper = DtRprFomMapper::create(0),
121 const char* fedFileName = 0,
122 InitializationStatus* status = 0
133 const char* federateType,
135 const char* fedFileName = 0,
136 void* fomMapInitData = 0,
137 InitializationStatus* status = 0
140 #if DtHLA_1516_EVOLVED
159 const char* federateName,
160 const char* federateType,
162 DtFomMapper* mapper = DtRprFomMapper::create(0),
164 const std::vector<DtString>& fomModules = std::vector<DtString>(),
165 InitializationStatus* status = 0 );
180 const char* federateName,
181 const char* federateType,
184 void* fomMapInitData = 0,
186 const std::vector<DtString>& fomModules = std::vector<DtString>(),
187 InitializationStatus* status = 0 );
212 virtual void setReflecting();
215 virtual bool reflecting()
const;
228 virtual void setReflectRemoteUpdatesIntoPubFlag(
bool onff);
231 virtual bool reflectRemoteUpdatesIntoPubFlag()
const;
237 virtual void setReflectingThroughRti();
240 virtual bool reflectingThroughRti()
const;
251 virtual void ignoreAdvisories();
254 virtual bool usingAdvisories()
const;
256 void setRemoveObjectOnAttOutOfScope(
bool remove);
259 #if DtHLA_1516_EVOLVED
261 void listFederationExecutions()
const;
281 const RTI::RegionHandleSet* region);
284 const RTI::Region* region);
303 DtDDMRegionSP region);
311 const RTI::RegionHandleSet* region);
314 const RTI::Region* region);
319 virtual DtTime currentTimeForStamping();
335 virtual int drainInput(
DtTime maxTime = -1,
DtTime minTime = 0.0);
345 virtual DtVrlRtiAmbassador* rtiAmb();
349 virtual DtVrlFederateAmbassador* fedAmb();
352 virtual RTI::FederateHandle fedHandle()
const;
355 virtual const DtString& fedType()
const;
357 #if DtHLA_1516_EVOLVED
360 virtual const DtString& fedName()
const;
364 virtual const DtString& execName()
const;
367 virtual bool isUsingMakRti()
const;
377 virtual DtString rtiVersion()
const;
384 virtual DtFom* fom();
387 virtual DtInteractionFactory* interactionFactory();
390 virtual DtHlaObjectFactory* objectFactory();
393 virtual DtFomMapper* fomMapper();
396 virtual DtHlaObjectManager* hlaObjectManager();
408 virtual void addInteractionCallback(RTI::InteractionClassHandle h,
409 DtReceiveInteractionCb cb,
411 DtDDMRegionSP region = DtDDMRegionSP());
417 virtual void addInteractionCallbackByName(
const char* className,
418 DtReceiveInteractionCb cb,
420 DtDDMRegionSP region = DtDDMRegionSP());
426 virtual void removeInteractionCallback(RTI::InteractionClassHandle h,
427 DtReceiveInteractionCb cb,
429 DtDDMRegionSP region = DtDDMRegionSP());
435 virtual void removeInteractionCallbackByName(
const char* className,
436 DtReceiveInteractionCb cb,
437 void* usr, DtDDMRegionSP region = DtDDMRegionSP());
441 virtual void addDiscoverObjectCallback(RTI::ObjectClassHandle h,
442 DtDiscoverObjectCb cb,
448 virtual void removeDiscoverObjectCallback(RTI::ObjectClassHandle h,
449 DtDiscoverObjectCb cb,
454 virtual void addRemoveObjectCallback(
456 RTI::ObjectInstanceHandle
id,
458 RTI::ObjectHandle
id,
466 virtual void removeRemoveObjectCallback(
468 RTI::ObjectInstanceHandle
id,
470 RTI::ObjectHandle
id,
478 virtual void setDestroyFedExecFlag(
bool flag);
481 virtual bool destroyFedExecFlag();
486 virtual void setReplyingToSynchronizationPoints(
bool yesNo);
489 virtual bool replyingToSynchronizationPoints();
493 virtual void replyToSynchronizationPoint(
const char* label);
499 virtual void setAutoSubscribeFlag(
bool flag);
502 virtual bool autoSubscribeFlag()
const;
506 virtual void setSendFedTime(
bool flag);
509 virtual bool sendFedTime()
const;
518 virtual void setUseGeographicDdm(
bool flag);
522 virtual bool useGeographicDdm()
const;
524 virtual void setDeleteOnOutOfScope(
bool yesNo);
526 virtual bool deleteOnOutOfScope()
const;
530 virtual RTI::LogicalTimeFactory *logicalTimeFactory()
const;
537 virtual void registerSynchronizationPoint(
const DtString& label);
540 virtual void registerSynchronizationPoint(
543 const RTI::VariableLengthData& tag);
550 virtual void addSynchPointRegistrationSucceededCb(
const DtString& label,
551 DtSynchPointCb func,
void* usr);
554 virtual void addSynchPointRegistrationSucceededCb(DtSynchPointCb func,
559 virtual void removeSynchPointRegistrationSucceededCb(
const DtString& label,
560 DtSynchPointCb func,
void* usr);
563 virtual void removeSynchPointRegistrationSucceededCb(DtSynchPointCb func,
567 virtual void addSynchPointRegistrationFailedCb(
const DtString& label,
568 DtSynchPointCb func,
void* usr);
571 virtual void addSynchPointRegistrationFailedCb(DtSynchPointCb func,
575 virtual void removeSynchPointRegistrationFailedCb(
const DtString& label,
576 DtSynchPointCb func,
void* usr);
579 virtual void removeSynchPointRegistrationFailedCb(DtSynchPointCb func,
583 virtual void addFederationSynchedCb(
const DtString& label,
584 DtSynchPointCb func,
void* usr);
587 virtual void addFederationSynchedCb(DtSynchPointCb func,
591 virtual void removeFederationSynchedCb(
const DtString& label,
592 DtSynchPointCb func,
void* usr);
595 virtual void removeFederationSynchedCb(DtSynchPointCb func,
598 #if DtHLA_1516_EVOLVED
600 virtual void addConnectionLostCb(DtConnectionLostCb func,
603 virtual void removeConnectionLostCb(DtConnectionLostCb func,
void *usr);
610 virtual void addAnnounceSynchPointCb(
const DtString& label,
611 DtAnnounceSynchPointCb func,
void* usr);
616 virtual void addAnnounceSynchPointCb(DtAnnounceSynchPointCb func,
620 virtual void removeAnnounceSynchPointCb(
const DtString& label,
621 DtAnnounceSynchPointCb func,
void* usr);
624 virtual void removeAnnounceSynchPointCb(DtAnnounceSynchPointCb func,
651 virtual void setObjectTagModifier(
const DtString& className,
652 DtObjectTagModifierSP modifier,
bool applyToSubClasses =
true);
662 virtual void setInteractionTagModifier(
const DtString& className,
663 DtInteractionTagModifierSP modifier,
bool applyToSubClasses =
true);
670 static void setLogicalTimeFactoryFactoryParameter(std::wstring);
673 static std::wstring logicalTimeFactoryFactoryParameter();
678 static void setFedAmbCreator(DtFedAmbCreator creator);
681 static DtFedAmbCreator fedAmbCreator();
686 static void setRtiAmbCreator(DtRtiAmbCreator creator);
689 static DtRtiAmbCreator rtiAmbCreator();
695 static void overrideRidParameters(
const std::map<DtString, DtString>& ridParams);
705 static void setFomMapperCreator(DtFomMapperCreator creator,
709 static DtFomMapperCreator fomMapperCreator();
719 static void setLogicalTimeToVrlTimeConverter(DtLogicalTimeToVrlTimeConverter func);
720 static DtLogicalTimeToVrlTimeConverter logicalTimeToVrlTimeConverter();
722 static void setFedTimeToVrlTimeConverter(DtFedTimeToVrlTimeConverter func);
723 static DtFedTimeToVrlTimeConverter fedTimeToVrlTimeConverter();
733 static void setVrlTimeToLogicalTimeConverter(DtVrlTimeToLogicalTimeConverter func);
734 static DtVrlTimeToLogicalTimeConverter vrlTimeToLogicalTimeConverter();
736 static void setVrlTimeToFedTimeConverter(DtVrlTimeToFedTimeConverter func);
737 static DtVrlTimeToFedTimeConverter vrlTimeToFedTimeConverter();
747 static DtTime defaultDtLogicalTimeToVrlTimeConverter(
const RTI::LogicalTime &time);
749 static DtTime defaultDtFedTimeToVrlTimeConverter(
const RTI::FedTime &time);
754 static std::auto_ptr<RTI::LogicalTime> defaultVrlTimeToLogicalTimeConverter(
757 static RTI::FedTime* defaultVrlTimeToFedTimeConverter(
const DtTime &time);
768 void initializeConnection(InitializationStatus* result);
772 void initializeFomMapper(
const char* dsoName,
void* fomMapInitData,
773 InitializationStatus* result);
779 DtFomMapperCreator* creator,
780 DtFomMapperDeletor* deletor);
785 void handleFedFile(
const DtString& fedFileName);
791 int initFom(InitializationStatus* result);
796 int createRtiAmb(InitializationStatus* result);
803 int connectRtiAmb(InitializationStatus* result);
809 int createFedEx(InitializationStatus* result);
813 int createFedAmb(InitializationStatus* result);
818 int joinFedEx(InitializationStatus* result);
823 bool fedFileExists(
const DtFilename &name)
const;
826 void setFedFile(
const DtString& fedFile);
828 #if DtHLA_1516_EVOLVED
831 void setFomModules(
const std::vector<DtString>& modules);
834 void resignAndDisconnect();
840 static void replyToSyncPointCallback(
void* usr);
847 #if DtHLA_1516_EVOLVED
855 std::auto_ptr<RTI::LogicalTimeFactory> myLogicalTimeFactory;
857 DtVrlRtiAmbassador* myRtiAmb;
858 RTI::FederateHandle myFedHandle;
859 DtVrlFederateAmbassador* myFedAmb;
863 DtHlaObjectManager* myHlaObjectManager;
864 DtInteractionManager* myInteractionManager;
866 DtFomMapper* myFomMapper;
868 DtFomMapperCreator myDsoCreator;
869 DtFomMapperDeletor myDsoDeletor;
874 bool myDestroyFedExFlag;
875 bool myUseFomMapperDeletor;
878 bool myReflectRemoteUpdatesIntoPubFlag;
879 bool myReflectingThroughRti;
880 bool myReplyingToSynchronizationPoints;
881 bool myUsingAdvisories;
882 bool myAutoSubscribeFlag;
883 bool mySendFedTimeFlag;
885 bool myUseGeographicDdm;
886 bool myDeleteOnOutOfScope;
887 #if DtHLA_1516_EVOLVED
898 #if DtHLA_1516_EVOLVED
899 std::vector<std::wstring> myFomModules;
900 std::wstring myMimFomModule;
902 std::wstring myLocalSettingsDesignator;
904 std::vector<std::wstring> myRtiArguments;
908 RTI::VariableLengthData myTag;
925 static std::wstring myLogicalTimeFactFactParam;
926 static DtFedAmbCreator theFedAmbCreator;
927 static DtRtiAmbCreator theRtiAmbCreator;
928 static DtFomMapperCreator theFomMapperCreator;
929 static void* theFomMapInitData;
931 static DtVrlTimeToLogicalTimeConverter theVrlTimeToLogicalTimeConverter;
932 static DtLogicalTimeToVrlTimeConverter theLogicalTimeToVrlTimeConverter;
934 static DtVrlTimeToFedTimeConverter theVrlTimeToFedTimeConverter;
935 static DtFedTimeToVrlTimeConverter theFedTimeToVrlTimeConverter;
942 inline DtVrlRtiAmbassador* DtExerciseConn::rtiAmb()
947 inline DtVrlFederateAmbassador* DtExerciseConn::fedAmb()
952 inline DtHlaObjectManager* DtExerciseConn::hlaObjectManager()
954 return myHlaObjectManager;
957 inline DtFom* DtExerciseConn::fom()
962 inline RTI::FederateHandle DtExerciseConn::fedHandle()
const
967 #if DtHLA_1516_EVOLVED
968 inline const DtString& DtExerciseConn::fedName()
const
974 inline const DtString& DtExerciseConn::fedType()
const
979 inline const DtString& DtExerciseConn::execName()
const
985 inline void DtExerciseConn::setSendFedTime(
bool flag)
987 mySendFedTimeFlag = flag;
990 inline bool DtExerciseConn::sendFedTime()
const
992 return mySendFedTimeFlag;
995 inline void DtExerciseConn::setUseGeographicDdm(
bool flag)
997 myUseGeographicDdm = flag;
1000 inline bool DtExerciseConn::useGeographicDdm()
const
1002 return myUseGeographicDdm;
1005 inline void DtExerciseConn::setDeleteOnOutOfScope(
bool yesNo)
1007 myDeleteOnOutOfScope = yesNo;
1010 inline bool DtExerciseConn::deleteOnOutOfScope()
const
1012 return myDeleteOnOutOfScope;