VR-Link API Documentation for HLA 1.3
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
exerciseConnHLA.h
Go to the documentation of this file.
1 /*********************************************************************
2 ** Copyright (c) 1992-2010 VT MAK
3 ** All rights reserved.
4 *********************************************************************/
8 
9 #ifndef exerciseConnHLA_H_
10 #define exerciseConnHLA_H_
11 
12 #if DtHLA
13 
14 #include "baseExerciseConn.h"
15 #include "callbacks.h"
16 #include "rprFomMapper.h"
17 #include "rtiCompatibility.h"
18 #include "eventId.h"
19 #include "vrlFederateAmbassador.h"
20 #include "vrlRtiAmbassador.h"
22 
23 #include <matrix/geodeticCoord.h>
24 #include <vlutil/vlVersion.h>
25 #include "userTagModifiers.h"
26 
27 
28 class DtInteraction;
30 class DtHlaObjectFactory;
32 class DtHlaObjectManager;
33 class DtStateMsg;
35 class DtFom;
36 class DtFilename;
37 class DtDynamicLibrary;
38 class DtFomMapper;
39 
40 
41 
59 {
60 
61 public:
62 
63  typedef DtVrlFederateAmbassador* (*DtFedAmbCreator)();
64  typedef DtFomMapper* (*DtFomMapperCreator)(void* usr);
65  typedef void (*DtFomMapperDeletor)(DtFomMapper*);
66 
67  typedef void (*DtRtiErrorCb)(const char* label, void* usr);
68 
71  typedef DtVrlRtiAmbassador* (*DtRtiAmbCreator)(const std::vector<std::wstring>&);
72 
73 #if DtHLA_1516
74  typedef DtTime (*DtLogicalTimeToVrlTimeConverter) (const RTI::LogicalTime &theLogicalTime);
75  typedef std::auto_ptr<RTI::LogicalTime>(*DtVrlTimeToLogicalTimeConverter) (const DtTime &time);
76 #else
77  typedef DtTime (*DtFedTimeToVrlTimeConverter) (const RTI::FedTime &theFedTIme);
78  typedef RTI::FedTime* (*DtVrlTimeToFedTimeConverter) (const DtTime &time);
79 #endif
80 
91  DtINIT_SUCCESS = 0,
92  DtCOULD_NOT_CREATE_RTIAMB = 1,
93  DtCOULD_NOT_CREATE_FEDEX = 2,
94  DtCOULD_NOT_JOIN_FEDEX = 3,
95  DtCOULD_NOT_OPEN_FED = 4,
96  DtCOULD_NOT_PARSE_FED = 5,
97  DtCOULD_NOT_FIND_FOMMAPPER = 6,
98  DtERROR_OPENING_FOMMAPPER_LIB = 7,
99  DtCOULD_NOT_CONNECT_RTIAMB = 8
100 
101  };
102 
103 public:
104 
107  DtExerciseConn(const DtExerciseConnInitializer& init, InitializationStatus* status = 0);
108 
120  DtExerciseConn(const char* execName,
121  const char* federateType,
122  DtFomMapper* mapper = DtRprFomMapper::create(0),
123  const char* fedFileName = 0,
124  InitializationStatus* status = 0
125  );
126 
134  DtExerciseConn(const char* execName,
135  const char* federateType,
136  const char* dsoName,
137  const char* fedFileName = 0,
138  void* fomMapInitData = 0,
139  InitializationStatus* status = 0
140  );
141 
142 #if DtHLA_1516_EVOLVED
143 
144 
149 
160  DtExerciseConn(const char* execName,
161  const char* federateName,
162  const char* federateType,
163  const DtString& fedFile,
164  DtFomMapper* mapper = DtRprFomMapper::create(0),
165  const DtString mimModule = "",
166  const std::vector<DtString>& fomModules = std::vector<DtString>(),
167  InitializationStatus* status = 0 );
168 
169 
174 
181  DtExerciseConn(const char* execName,
182  const char* federateName,
183  const char* federateType,
184  const DtString& fedFile,
185  const char* dsoName,
186  void* fomMapInitData = 0,
187  const DtString mimModule = "",
188  const std::vector<DtString>& fomModules = std::vector<DtString>(),
189  InitializationStatus* status = 0 );
190 #endif
191 
193  virtual ~DtExerciseConn();
194 
195 private:
196 
198  DtExerciseConn(const DtExerciseConn& orig);
199 
202 
203 public:
204 
214  virtual void setReflecting();
215 
217  virtual bool reflecting() const;
218 
225  virtual void setPassiveMode();
226 
228  virtual bool passiveMode() const;
229 
233 
234  virtual void setDefaultOwnershipHandler(DtOwnershipHandler* ownershipHandler);
235  virtual DtOwnershipHandler* defaultOwnershipHandler();
237 
249  virtual void setReflectRemoteUpdatesIntoPubFlag(bool onff);
250 
252  virtual bool reflectRemoteUpdatesIntoPubFlag() const;
253 
258  virtual void setReflectingThroughRti();
259 
261  virtual bool reflectingThroughRti() const;
262 
272  virtual void ignoreAdvisories();
273 
275  virtual bool usingAdvisories() const;
276 
277  virtual void setRemoveObjectOnAttOutOfScope(bool remove);
278 
285  virtual bool enabledGenericAttributes() const;
286 
287 #if DtHLA_1516_EVOLVED
288 
289  void listFederationExecutions();
290 #endif
291 
295  virtual void send(const DtStateMsg& msg);
296 
302  virtual void send(const DtInteraction& msg);
303 
307 #if DtHLA_1516
308  virtual void send(const DtInteraction& msg,
309  const RTI::RegionHandleSet* region);
310 #else
311  virtual void send(const DtInteraction& msg,
312  const RTI::Region* region);
313 #endif
314 
319  virtual void sendStamped(const DtStateMsg& msg);
320 
325  virtual void sendStamped(const DtInteraction& msg);
326 
330  virtual void sendStampedWithRegion(const DtInteraction& msg,
331  DtDDMRegionSP region);
332 
337 #if DtHLA_1516
338  virtual void sendStamped(const DtInteraction& msg,
339  const RTI::RegionHandleSet* region);
340 #else
341  virtual void sendStamped(const DtInteraction& msg,
342  const RTI::Region* region);
343 #endif
344 
347  virtual DtTime currentTimeForStamping();
348 
363  virtual int drainInput(DtTime maxTime = -1, DtTime minTime = 0.0);
364 
366  virtual void setObjectIdForEventId(const DtGlobalObjectDesignator& id);
367 
369  virtual const DtEventID& nextEventId();
370 
373  virtual DtVrlRtiAmbassador* rtiAmb();
374 
377  virtual DtVrlFederateAmbassador* fedAmb();
378 
380  virtual RTI::FederateHandle fedHandle() const;
381 
383  virtual const DtString& fedType() const;
384 
385 #if DtHLA_1516_EVOLVED
386 
387 
388  virtual const DtString& fedName() const;
389 #endif
390 
392  virtual const DtString& execName() const;
393 
395  virtual bool isUsingMakRti() const;
396 
400  virtual DtString rtiName() const;
401 
405  virtual DtString rtiVersion() const;
406 
409  virtual DtString rtiError() const;
410 
412  virtual DtFom* fom();
413 
415  virtual DtInteractionFactory* interactionFactory();
416 
418  virtual DtHlaObjectFactory* objectFactory();
419 
421  virtual DtFomMapper* fomMapper() const;
422 
424  virtual DtHlaObjectManager* hlaObjectManager();
425 
427  virtual void setTimeStampType(DtTimeStampType relOrAbs);
428 
430  virtual DtTimeStampType timeStampType() const;
431 
436  virtual void addInteractionCallback(RTI::InteractionClassHandle h,
438  void* usr,
439  DtDDMRegionSP region = DtDDMRegionSP());
440 
445  virtual void addInteractionCallbackByName(const char* className,
447  void* usr,
448  DtDDMRegionSP region = DtDDMRegionSP());
449 
454  virtual void removeInteractionCallback(RTI::InteractionClassHandle h,
456  void* usr,
457  DtDDMRegionSP region = DtDDMRegionSP());
458 
463  virtual void removeInteractionCallbackByName(const char* className,
465  void* usr, DtDDMRegionSP region = DtDDMRegionSP());
466 
469  virtual void addDiscoverObjectCallback(RTI::ObjectClassHandle h,
471  void* usr);
472 
476  virtual void removeDiscoverObjectCallback(RTI::ObjectClassHandle h,
478  void* usr);
479 
482  virtual void addRemoveObjectCallback(
483 #if DtHLA_1516
484  RTI::ObjectInstanceHandle id,
485 #else
486  RTI::ObjectHandle id,
487 #endif
488  DtRemoveObjectCb cb,
489  void* usr);
490 
494  virtual void removeRemoveObjectCallback(
495 #if DtHLA_1516
496  RTI::ObjectInstanceHandle id,
497 #else
498  RTI::ObjectHandle id,
499 #endif
500  DtRemoveObjectCb cb,
501  void* usr);
502 
506  virtual void setDestroyFedExecFlag(bool flag);
507 
509  virtual bool destroyFedExecFlag();
510 
514  virtual void setReplyingToSynchronizationPoints(bool yesNo);
515 
517  virtual bool replyingToSynchronizationPoints();
518 
521  virtual void replyToSynchronizationPoint(const char* label);
522 
527  virtual void setAutoSubscribeFlag(bool flag);
528 
530  virtual bool autoSubscribeFlag() const;
531 
534  virtual void setSendFedTime(bool flag);
535 
537  virtual bool sendFedTime() const;
538 
546  virtual void setUseGeographicDdm(bool flag);
547 
550  virtual bool useGeographicDdm() const;
551 
552  virtual void setDeleteOnOutOfScope(bool yesNo);
553 
554  virtual bool deleteOnOutOfScope() const;
555 
556 #if DtHLA_1516
557 
558  virtual RTI::LogicalTimeFactory *logicalTimeFactory() const;
559 
560 #endif
561 
564  virtual void registerSynchronizationPoint(const DtString& label);
565 
567  virtual void registerSynchronizationPoint(
568  const DtString& label,
569 #if DtHLA_1516
570  const RTI::VariableLengthData& tag);
571 #else
572  const DtString& tag);
573 #endif
574 
576  virtual void addFederateSaveCb(const DtString& label,
577  DtFederateSaveCb func, void* usr);
578  virtual void addFederateSaveCb(DtFederateSaveCb func, void* usr);
579 
581  virtual void addFederateRestoreCb(const DtString& label,
582  DtFederateSaveCb func, void* usr);
583  virtual void addFederateRestoreCb(DtFederateSaveCb func, void* usr);
584 
586  virtual void removeFederateSaveCb(const DtString& label,
587  DtFederateSaveCb func, void* usr);
588  virtual void removeFederateSaveCb(DtFederateSaveCb func, void* usr);
589 
591  virtual void removeFederateRestoreCb(const DtString& label,
592  DtFederateSaveCb func, void* usr);
593  virtual void removeFederateRestoreCb(DtFederateSaveCb func, void* usr);
594 
597  virtual void addSynchPointRegistrationSucceededCb(const DtString& label,
598  DtSynchPointCb func, void* usr);
599 
601  virtual void addSynchPointRegistrationSucceededCb(DtSynchPointCb func,
602  void* usr);
603 
606  virtual void removeSynchPointRegistrationSucceededCb(const DtString& label,
607  DtSynchPointCb func, void* usr);
608 
610  virtual void removeSynchPointRegistrationSucceededCb(DtSynchPointCb func,
611  void* usr);
612 
614  virtual void addSynchPointRegistrationFailedCb(const DtString& label,
615  DtSynchPointCb func, void* usr);
616 
618  virtual void addSynchPointRegistrationFailedCb(DtSynchPointCb func,
619  void* usr);
620 
622  virtual void removeSynchPointRegistrationFailedCb(const DtString& label,
623  DtSynchPointCb func, void* usr);
624 
626  virtual void removeSynchPointRegistrationFailedCb(DtSynchPointCb func,
627  void* usr);
628 
630  virtual void addFederationSynchedCb(const DtString& label,
631  DtSynchPointCb func, void* usr);
632 
634  virtual void addFederationSynchedCb(DtSynchPointCb func,
635  void* usr);
636 
638  virtual void removeFederationSynchedCb(const DtString& label,
639  DtSynchPointCb func, void* usr);
640 
642  virtual void removeFederationSynchedCb(DtSynchPointCb func,
643  void* usr);
644 
649 
650  virtual void addRtiErrorCb(const DtString& label, DtRtiErrorCb func,
651  void* usr);
652  virtual void removeRtiErrorCb(const DtString& label, DtRtiErrorCb func,
653  void* usr);
654  virtual void addRtiErrorCb(DtRtiErrorCb func, void* usr);
655  virtual void removeRtiErrorCb(DtRtiErrorCb func, void* usr);
657 
658 #if DtHLA_1516_EVOLVED
659 
660  virtual void addConnectionLostCb(DtConnectionLostCb func,
661  void* usr);
663  virtual void removeConnectionLostCb(DtConnectionLostCb func, void *usr);
664 #endif
665 
669  virtual void addAnnounceSynchPointCb(const DtString& label,
670  DtAnnounceSynchPointCb func, void* usr);
671 
675  virtual void addAnnounceSynchPointCb(DtAnnounceSynchPointCb func,
676  void* usr);
677 
679  virtual void removeAnnounceSynchPointCb(const DtString& label,
680  DtAnnounceSynchPointCb func, void* usr);
681 
683  virtual void removeAnnounceSynchPointCb(DtAnnounceSynchPointCb func,
684  void* usr);
685 
688  virtual void setDdmPlayBoxLowerBound(const DtGeodeticCoord& bound);
689 
692  virtual void setDdmPlayBoxUpperBound(const DtGeodeticCoord& bound);
693 
696  virtual const DtGeodeticCoord& ddmPlayBoxLowerBound() const;
697 
700  virtual const DtGeodeticCoord& ddmPlayBoxUpperBound() const;
701 
710  virtual void setObjectTagModifier(const DtString& className,
711  DtObjectTagModifierSP modifier, bool applyToSubClasses = true);
712 
721  virtual void setInteractionTagModifier(const DtString& className,
722  DtInteractionTagModifierSP modifier, bool applyToSubClasses = true);
723 
735 
736  virtual void setGetValueMethod( DtExerciseConnInitializer::DtGetValueMethod getValueMethodChoice );
737  virtual DtExerciseConnInitializer::DtGetValueMethod getValueMethod( ) const;
739 
740 public:
741 
742 #if DtHLA_1516
743 
744 
745 
746  static void setLogicalTimeFactoryFactoryParameter(std::wstring);
747 
749  static std::wstring logicalTimeFactoryFactoryParameter();
750 #endif
751 
752 
753 
754  static void setFedAmbCreator(DtFedAmbCreator creator);
755 
757  static DtFedAmbCreator fedAmbCreator();
758 
762  static void setRtiAmbCreator(DtRtiAmbCreator creator);
763 
765  static DtRtiAmbCreator rtiAmbCreator();
766 
771  static void overrideRidParameters(const std::map<DtString, DtString>& ridParams);
772 
781  static void setFomMapperCreator(DtFomMapperCreator creator,
782  void* usr = 0);
783 
785  static DtFomMapperCreator fomMapperCreator();
786 
794 #if DtHLA_1516
795  static void setLogicalTimeToVrlTimeConverter(DtLogicalTimeToVrlTimeConverter func);
796  static DtLogicalTimeToVrlTimeConverter logicalTimeToVrlTimeConverter();
797 #else
798  static void setFedTimeToVrlTimeConverter(DtFedTimeToVrlTimeConverter func);
799  static DtFedTimeToVrlTimeConverter fedTimeToVrlTimeConverter();
800 #endif
801 
808 #if DtHLA_1516
809  static void setVrlTimeToLogicalTimeConverter(DtVrlTimeToLogicalTimeConverter func);
810  static DtVrlTimeToLogicalTimeConverter vrlTimeToLogicalTimeConverter();
811 #else
812  static void setVrlTimeToFedTimeConverter(DtVrlTimeToFedTimeConverter func);
813  static DtVrlTimeToFedTimeConverter vrlTimeToFedTimeConverter();
814 #endif
815 
822 #if DtHLA_1516
823  static DtTime defaultDtLogicalTimeToVrlTimeConverter( const RTI::LogicalTime &time);
824 #else
825  static DtTime defaultDtFedTimeToVrlTimeConverter( const RTI::FedTime &time);
826 #endif
827 
829 #if DtHLA_1516
830  static std::auto_ptr<RTI::LogicalTime> defaultVrlTimeToLogicalTimeConverter(
831  const DtTime &time);
832 #else
833  static RTI::FedTime* defaultVrlTimeToFedTimeConverter(const DtTime &time);
834 #endif
835 
837  static DtString vrlinkVersion();
838 
839 
843  virtual bool callRtiErrorCallback(DtString &label);
844 protected:
845 
846  // Check if the RTI version supports 64-bit alignment for getValuePointer.
848  bool checkRtiVersionForPointerAlignment();
849 
851  void initializeConnection(InitializationStatus* result);
852 
855  void initializeFomMapper(const char* dsoName, void* fomMapInitData,
856  InitializationStatus* result);
857 
861  void getFuncsFromSharedLib(DtDynamicLibrary& dso,
862  DtFomMapperCreator* creator,
863  DtFomMapperDeletor* deletor);
864 
865 
868  void handleFedFile(const DtString& fedFileName);
869 
874  int initFom(InitializationStatus* result);
875 
879  int createRtiAmb(InitializationStatus* result);
880 
886  int connectRtiAmb(InitializationStatus* result);
887 
892  int createFedEx(InitializationStatus* result);
893 
896  int createFedAmb(InitializationStatus* result);
897 
901  int joinFedEx(InitializationStatus* result);
902 
906  bool fedFileExists(const DtFilename &name) const;
907 
908 #if DtHLA_1516_EVOLVED
909 
910 
911  void setFomModules(const std::vector<DtString>& modules);
912 
914  void resignAndDisconnect();
915 #endif
916 
920 #if DtHLA_1516
921  virtual void rtiSend(DtInteraction& msg, RTI::InteractionClassHandle handle,
922  const RTI::RegionHandleSet* region);
923 #else
924  virtual void rtiSend(DtInteraction& msg, RTI::InteractionClassHandle handle,
925  const RTI::Region* region);
926 #endif
927 
929 #if DtHLA_1516
930  virtual void selfReflectInteraction(DtInteraction& msg, RTI::InteractionClassHandle handle,
931  const RTI::RegionHandleSet* region);
932 #else
933  virtual void selfReflectInteraction(DtInteraction& msg, RTI::InteractionClassHandle handle,
934  const RTI::Region* region);
935 #endif
936 
937 protected:
938 
940  static void replyToSyncPointCallback(void* usr);
941 
942 protected:
943 
945 
947 #if DtHLA_1516_EVOLVED
948 
949 
950 
951 
952  DtString myFedName;
953 #endif
954 #if DtHLA_1516
955  std::auto_ptr<RTI::LogicalTimeFactory> myLogicalTimeFactory;
956 #endif
958  RTI::FederateHandle myFedHandle;
960 
962 
966 
969  DtFomMapperCreator myDsoCreator;
970  DtFomMapperDeletor myDsoDeletor;
971 
974 
977 
989 
992 #if DtHLA_1516_EVOLVED
993 
994  bool myIsConnected;
995 #endif
996 
999 
1002 
1003 #if DtHLA_1516_EVOLVED
1004  std::vector<std::wstring> myFomModules;
1005  std::wstring myMimFomModule;
1006 
1007  std::wstring myLocalSettingsDesignator;
1008 #elif DtHLA_1516
1009  std::vector<std::wstring> myRtiArguments;
1010 #endif
1011 
1012 #if DtHLA_1516
1013  RTI::VariableLengthData myTag;
1014 #else
1016 #endif
1017 
1022 
1027 
1028 protected:
1029 
1031  {
1032  DtRtiErrorCb cbFunction;
1033  void* userData;
1034  };
1035 
1037  {
1039  DtRtiErrorCb cbFunction;
1040  void* userData;
1041  };
1042 
1043  static std::wstring myLogicalTimeFactFactParam;
1044  static DtFedAmbCreator theFedAmbCreator;
1045  static DtRtiAmbCreator theRtiAmbCreator;
1046  static DtFomMapperCreator theFomMapperCreator;
1047  static void* theFomMapInitData;
1048 #if DtHLA_1516
1049  static DtVrlTimeToLogicalTimeConverter theVrlTimeToLogicalTimeConverter;
1050  static DtLogicalTimeToVrlTimeConverter theLogicalTimeToVrlTimeConverter;
1051 #else
1052  static DtVrlTimeToFedTimeConverter theVrlTimeToFedTimeConverter;
1053  static DtFedTimeToVrlTimeConverter theFedTimeToVrlTimeConverter;
1054 #endif
1055 
1056  std::list<DtGeneralRtiErrorCbInfo> myRtiErrorCbList;
1057  std::list<DtLabelledRtiErrorCbInfo> myLabRtiErrorCbList;
1058 
1059 
1060 };
1061 
1063 {
1064  return myRtiAmb;
1065 }
1066 
1068 {
1069  return myFedAmb;
1070 }
1071 
1073 {
1074  return myHlaObjectManager;
1075 }
1076 
1078 {
1079  return myFom;
1080 }
1081 
1082 inline RTI::FederateHandle DtExerciseConn::fedHandle() const
1083 {
1084  return myFedHandle;
1085 }
1086 
1087 #if DtHLA_1516_EVOLVED
1088 inline const DtString& DtExerciseConn::fedName() const
1089 {
1090  return myFedName;
1091 }
1092 #endif
1093 
1094 inline const DtString& DtExerciseConn::fedType() const
1095 {
1096  return myFedType;
1097 }
1098 
1099 inline const DtString& DtExerciseConn::execName() const
1100 {
1101  return myExecName;
1102 }
1103 
1104 
1105 inline void DtExerciseConn::setSendFedTime(bool flag)
1106 {
1107  mySendFedTimeFlag = flag;
1108 }
1109 
1110 inline bool DtExerciseConn::sendFedTime() const
1111 {
1112  return mySendFedTimeFlag;
1113 }
1114 
1116 {
1117  myUseGeographicDdm = flag;
1118 }
1119 
1121 {
1122  return myUseGeographicDdm;
1123 }
1124 
1126 {
1127  myDeleteOnOutOfScope = yesNo;
1128 }
1129 
1131 {
1132  return myDeleteOnOutOfScope;
1133 }
1134 
1135 #endif
1136 #endif
1137 

Document ID: Generated on Mon Apr 8 04:49:21 EDT 2019 from SVN revision 197403
Copyright © 2005-2016 VT MÄK. All Rights Reserved (www.mak.com)