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 
222 
223  virtual void setDefaultOwnershipHandler(DtOwnershipHandler* ownershipHandler);
224  virtual DtOwnershipHandler* defaultOwnershipHandler();
226 
238  virtual void setReflectRemoteUpdatesIntoPubFlag(bool onff);
239 
241  virtual bool reflectRemoteUpdatesIntoPubFlag() const;
242 
247  virtual void setReflectingThroughRti();
248 
250  virtual bool reflectingThroughRti() const;
251 
261  virtual void ignoreAdvisories();
262 
264  virtual bool usingAdvisories() const;
265 
266  virtual void setRemoveObjectOnAttOutOfScope(bool remove);
267 
274  virtual bool enabledGenericAttributes() const;
275 
276 #if DtHLA_1516_EVOLVED
277 
278  void listFederationExecutions();
279 #endif
280 
284  virtual void send(const DtStateMsg& msg);
285 
291  virtual void send(const DtInteraction& msg);
292 
296 #if DtHLA_1516
297  virtual void send(const DtInteraction& msg,
298  const RTI::RegionHandleSet* region);
299 #else
300  virtual void send(const DtInteraction& msg,
301  const RTI::Region* region);
302 #endif
303 
308  virtual void sendStamped(const DtStateMsg& msg);
309 
314  virtual void sendStamped(const DtInteraction& msg);
315 
319  virtual void sendStampedWithRegion(const DtInteraction& msg,
320  DtDDMRegionSP region);
321 
326 #if DtHLA_1516
327  virtual void sendStamped(const DtInteraction& msg,
328  const RTI::RegionHandleSet* region);
329 #else
330  virtual void sendStamped(const DtInteraction& msg,
331  const RTI::Region* region);
332 #endif
333 
336  virtual DtTime currentTimeForStamping();
337 
352  virtual int drainInput(DtTime maxTime = -1, DtTime minTime = 0.0);
353 
355  virtual void setObjectIdForEventId(const DtGlobalObjectDesignator& id);
356 
358  virtual const DtEventID& nextEventId();
359 
362  virtual DtVrlRtiAmbassador* rtiAmb();
363 
366  virtual DtVrlFederateAmbassador* fedAmb();
367 
369  virtual RTI::FederateHandle fedHandle() const;
370 
372  virtual const DtString& fedType() const;
373 
374 #if DtHLA_1516_EVOLVED
375 
376 
377  virtual const DtString& fedName() const;
378 #endif
379 
381  virtual const DtString& execName() const;
382 
384  virtual bool isUsingMakRti() const;
385 
389  virtual DtString rtiName() const;
390 
394  virtual DtString rtiVersion() const;
395 
398  virtual DtString rtiError() const;
399 
401  virtual DtFom* fom();
402 
404  virtual DtInteractionFactory* interactionFactory();
405 
407  virtual DtHlaObjectFactory* objectFactory();
408 
410  virtual DtFomMapper* fomMapper();
411 
413  virtual DtHlaObjectManager* hlaObjectManager();
414 
416  virtual void setTimeStampType(DtTimeStampType relOrAbs);
417 
419  virtual DtTimeStampType timeStampType() const;
420 
425  virtual void addInteractionCallback(RTI::InteractionClassHandle h,
427  void* usr,
428  DtDDMRegionSP region = DtDDMRegionSP());
429 
434  virtual void addInteractionCallbackByName(const char* className,
436  void* usr,
437  DtDDMRegionSP region = DtDDMRegionSP());
438 
443  virtual void removeInteractionCallback(RTI::InteractionClassHandle h,
445  void* usr,
446  DtDDMRegionSP region = DtDDMRegionSP());
447 
452  virtual void removeInteractionCallbackByName(const char* className,
454  void* usr, DtDDMRegionSP region = DtDDMRegionSP());
455 
458  virtual void addDiscoverObjectCallback(RTI::ObjectClassHandle h,
460  void* usr);
461 
465  virtual void removeDiscoverObjectCallback(RTI::ObjectClassHandle h,
467  void* usr);
468 
471  virtual void addRemoveObjectCallback(
472 #if DtHLA_1516
473  RTI::ObjectInstanceHandle id,
474 #else
475  RTI::ObjectHandle id,
476 #endif
477  DtRemoveObjectCb cb,
478  void* usr);
479 
483  virtual void removeRemoveObjectCallback(
484 #if DtHLA_1516
485  RTI::ObjectInstanceHandle id,
486 #else
487  RTI::ObjectHandle id,
488 #endif
489  DtRemoveObjectCb cb,
490  void* usr);
491 
495  virtual void setDestroyFedExecFlag(bool flag);
496 
498  virtual bool destroyFedExecFlag();
499 
503  virtual void setReplyingToSynchronizationPoints(bool yesNo);
504 
506  virtual bool replyingToSynchronizationPoints();
507 
510  virtual void replyToSynchronizationPoint(const char* label);
511 
516  virtual void setAutoSubscribeFlag(bool flag);
517 
519  virtual bool autoSubscribeFlag() const;
520 
523  virtual void setSendFedTime(bool flag);
524 
526  virtual bool sendFedTime() const;
527 
535  virtual void setUseGeographicDdm(bool flag);
536 
539  virtual bool useGeographicDdm() const;
540 
541  virtual void setDeleteOnOutOfScope(bool yesNo);
542 
543  virtual bool deleteOnOutOfScope() const;
544 
545 #if DtHLA_1516
546 
547  virtual RTI::LogicalTimeFactory *logicalTimeFactory() const;
548 
549 #endif
550 
553  virtual void registerSynchronizationPoint(const DtString& label);
554 
556  virtual void registerSynchronizationPoint(
557  const DtString& label,
558 #if DtHLA_1516
559  const RTI::VariableLengthData& tag);
560 #else
561  const DtString& tag);
562 #endif
563 
565  virtual void addFederateSaveCb(const DtString& label,
566  DtFederateSaveCb func, void* usr);
567  virtual void addFederateSaveCb(DtFederateSaveCb func, void* usr);
568 
570  virtual void addFederateRestoreCb(const DtString& label,
571  DtFederateSaveCb func, void* usr);
572  virtual void addFederateRestoreCb(DtFederateSaveCb func, void* usr);
573 
575  virtual void removeFederateSaveCb(const DtString& label,
576  DtFederateSaveCb func, void* usr);
577  virtual void removeFederateSaveCb(DtFederateSaveCb func, void* usr);
578 
580  virtual void removeFederateRestoreCb(const DtString& label,
581  DtFederateSaveCb func, void* usr);
582  virtual void removeFederateRestoreCb(DtFederateSaveCb func, void* usr);
583 
586  virtual void addSynchPointRegistrationSucceededCb(const DtString& label,
587  DtSynchPointCb func, void* usr);
588 
590  virtual void addSynchPointRegistrationSucceededCb(DtSynchPointCb func,
591  void* usr);
592 
595  virtual void removeSynchPointRegistrationSucceededCb(const DtString& label,
596  DtSynchPointCb func, void* usr);
597 
599  virtual void removeSynchPointRegistrationSucceededCb(DtSynchPointCb func,
600  void* usr);
601 
603  virtual void addSynchPointRegistrationFailedCb(const DtString& label,
604  DtSynchPointCb func, void* usr);
605 
607  virtual void addSynchPointRegistrationFailedCb(DtSynchPointCb func,
608  void* usr);
609 
611  virtual void removeSynchPointRegistrationFailedCb(const DtString& label,
612  DtSynchPointCb func, void* usr);
613 
615  virtual void removeSynchPointRegistrationFailedCb(DtSynchPointCb func,
616  void* usr);
617 
619  virtual void addFederationSynchedCb(const DtString& label,
620  DtSynchPointCb func, void* usr);
621 
623  virtual void addFederationSynchedCb(DtSynchPointCb func,
624  void* usr);
625 
627  virtual void removeFederationSynchedCb(const DtString& label,
628  DtSynchPointCb func, void* usr);
629 
631  virtual void removeFederationSynchedCb(DtSynchPointCb func,
632  void* usr);
633 
638 
639  virtual void addRtiErrorCb(const DtString& label, DtRtiErrorCb func,
640  void* usr);
641  virtual void removeRtiErrorCb(const DtString& label, DtRtiErrorCb func,
642  void* usr);
643  virtual void addRtiErrorCb(DtRtiErrorCb func, void* usr);
644  virtual void removeRtiErrorCb(DtRtiErrorCb func, void* usr);
646 
647 #if DtHLA_1516_EVOLVED
648 
649  virtual void addConnectionLostCb(DtConnectionLostCb func,
650  void* usr);
652  virtual void removeConnectionLostCb(DtConnectionLostCb func, void *usr);
653 #endif
654 
658  virtual void addAnnounceSynchPointCb(const DtString& label,
659  DtAnnounceSynchPointCb func, void* usr);
660 
664  virtual void addAnnounceSynchPointCb(DtAnnounceSynchPointCb func,
665  void* usr);
666 
668  virtual void removeAnnounceSynchPointCb(const DtString& label,
669  DtAnnounceSynchPointCb func, void* usr);
670 
672  virtual void removeAnnounceSynchPointCb(DtAnnounceSynchPointCb func,
673  void* usr);
674 
677  virtual void setDdmPlayBoxLowerBound(const DtGeodeticCoord& bound);
678 
681  virtual void setDdmPlayBoxUpperBound(const DtGeodeticCoord& bound);
682 
685  virtual const DtGeodeticCoord& ddmPlayBoxLowerBound() const;
686 
689  virtual const DtGeodeticCoord& ddmPlayBoxUpperBound() const;
690 
699  virtual void setObjectTagModifier(const DtString& className,
700  DtObjectTagModifierSP modifier, bool applyToSubClasses = true);
701 
710  virtual void setInteractionTagModifier(const DtString& className,
711  DtInteractionTagModifierSP modifier, bool applyToSubClasses = true);
712 
724 
725  virtual void setGetValueMethod( DtExerciseConnInitializer::DtGetValueMethod getValueMethodChoice );
726  virtual DtExerciseConnInitializer::DtGetValueMethod getValueMethod( ) const;
728 
729 public:
730 
731 #if DtHLA_1516
732 
733 
734 
735  static void setLogicalTimeFactoryFactoryParameter(std::wstring);
736 
738  static std::wstring logicalTimeFactoryFactoryParameter();
739 #endif
740 
741 
742 
743  static void setFedAmbCreator(DtFedAmbCreator creator);
744 
746  static DtFedAmbCreator fedAmbCreator();
747 
751  static void setRtiAmbCreator(DtRtiAmbCreator creator);
752 
754  static DtRtiAmbCreator rtiAmbCreator();
755 
760  static void overrideRidParameters(const std::map<DtString, DtString>& ridParams);
761 
770  static void setFomMapperCreator(DtFomMapperCreator creator,
771  void* usr = 0);
772 
774  static DtFomMapperCreator fomMapperCreator();
775 
783 #if DtHLA_1516
784  static void setLogicalTimeToVrlTimeConverter(DtLogicalTimeToVrlTimeConverter func);
785  static DtLogicalTimeToVrlTimeConverter logicalTimeToVrlTimeConverter();
786 #else
787  static void setFedTimeToVrlTimeConverter(DtFedTimeToVrlTimeConverter func);
788  static DtFedTimeToVrlTimeConverter fedTimeToVrlTimeConverter();
789 #endif
790 
797 #if DtHLA_1516
798  static void setVrlTimeToLogicalTimeConverter(DtVrlTimeToLogicalTimeConverter func);
799  static DtVrlTimeToLogicalTimeConverter vrlTimeToLogicalTimeConverter();
800 #else
801  static void setVrlTimeToFedTimeConverter(DtVrlTimeToFedTimeConverter func);
802  static DtVrlTimeToFedTimeConverter vrlTimeToFedTimeConverter();
803 #endif
804 
811 #if DtHLA_1516
812  static DtTime defaultDtLogicalTimeToVrlTimeConverter( const RTI::LogicalTime &time);
813 #else
814  static DtTime defaultDtFedTimeToVrlTimeConverter( const RTI::FedTime &time);
815 #endif
816 
818 #if DtHLA_1516
819  static std::auto_ptr<RTI::LogicalTime> defaultVrlTimeToLogicalTimeConverter(
820  const DtTime &time);
821 #else
822  static RTI::FedTime* defaultVrlTimeToFedTimeConverter(const DtTime &time);
823 #endif
824 
826  static DtString vrlinkVersion();
827 
828 
832  virtual bool callRtiErrorCallback(DtString &label);
833 protected:
834 
835  // Check if the RTI version supports 64-bit alignment for getValuePointer.
837  bool checkRtiVersionForPointerAlignment();
838 
840  void initializeConnection(InitializationStatus* result);
841 
844  void initializeFomMapper(const char* dsoName, void* fomMapInitData,
845  InitializationStatus* result);
846 
850  void getFuncsFromSharedLib(DtDynamicLibrary& dso,
851  DtFomMapperCreator* creator,
852  DtFomMapperDeletor* deletor);
853 
854 
857  void handleFedFile(const DtString& fedFileName);
858 
863  int initFom(InitializationStatus* result);
864 
868  int createRtiAmb(InitializationStatus* result);
869 
875  int connectRtiAmb(InitializationStatus* result);
876 
881  int createFedEx(InitializationStatus* result);
882 
885  int createFedAmb(InitializationStatus* result);
886 
890  int joinFedEx(InitializationStatus* result);
891 
895  bool fedFileExists(const DtFilename &name) const;
896 
897 #if DtHLA_1516_EVOLVED
898 
899 
900  void setFomModules(const std::vector<DtString>& modules);
901 
903  void resignAndDisconnect();
904 #endif
905 
909 #if DtHLA_1516
910  virtual void rtiSend(DtInteraction& msg, RTI::InteractionClassHandle handle,
911  const RTI::RegionHandleSet* region);
912 #else
913  virtual void rtiSend(DtInteraction& msg, RTI::InteractionClassHandle handle,
914  const RTI::Region* region);
915 #endif
916 
918 #if DtHLA_1516
919  virtual void selfReflectInteraction(DtInteraction& msg, RTI::InteractionClassHandle handle,
920  const RTI::RegionHandleSet* region);
921 #else
922  virtual void selfReflectInteraction(DtInteraction& msg, RTI::InteractionClassHandle handle,
923  const RTI::Region* region);
924 #endif
925 
926 protected:
927 
929  static void replyToSyncPointCallback(void* usr);
930 
931 protected:
932 
934 
936 #if DtHLA_1516_EVOLVED
937 
938 
939 
940 
941  DtString myFedName;
942 #endif
943 #if DtHLA_1516
944  std::auto_ptr<RTI::LogicalTimeFactory> myLogicalTimeFactory;
945 #endif
947  RTI::FederateHandle myFedHandle;
949 
951 
955 
958  DtFomMapperCreator myDsoCreator;
959  DtFomMapperDeletor myDsoDeletor;
960 
963 
966 
977 
980 #if DtHLA_1516_EVOLVED
981 
982  bool myIsConnected;
983 #endif
984 
987 
990 
991 #if DtHLA_1516_EVOLVED
992  std::vector<std::wstring> myFomModules;
993  std::wstring myMimFomModule;
994 
995  std::wstring myLocalSettingsDesignator;
996 #elif DtHLA_1516
997  std::vector<std::wstring> myRtiArguments;
998 #endif
999 
1000 #if DtHLA_1516
1001  RTI::VariableLengthData myTag;
1002 #else
1004 #endif
1005 
1010 
1015 
1016 protected:
1017 
1019  {
1020  DtRtiErrorCb cbFunction;
1021  void* userData;
1022  };
1023 
1025  {
1027  DtRtiErrorCb cbFunction;
1028  void* userData;
1029  };
1030 
1031  static std::wstring myLogicalTimeFactFactParam;
1032  static DtFedAmbCreator theFedAmbCreator;
1033  static DtRtiAmbCreator theRtiAmbCreator;
1034  static DtFomMapperCreator theFomMapperCreator;
1035  static void* theFomMapInitData;
1036 #if DtHLA_1516
1037  static DtVrlTimeToLogicalTimeConverter theVrlTimeToLogicalTimeConverter;
1038  static DtLogicalTimeToVrlTimeConverter theLogicalTimeToVrlTimeConverter;
1039 #else
1040  static DtVrlTimeToFedTimeConverter theVrlTimeToFedTimeConverter;
1041  static DtFedTimeToVrlTimeConverter theFedTimeToVrlTimeConverter;
1042 #endif
1043 
1044  std::list<DtGeneralRtiErrorCbInfo> myRtiErrorCbList;
1045  std::list<DtLabelledRtiErrorCbInfo> myLabRtiErrorCbList;
1046 
1047 
1048 };
1049 
1051 {
1052  return myRtiAmb;
1053 }
1054 
1056 {
1057  return myFedAmb;
1058 }
1059 
1061 {
1062  return myHlaObjectManager;
1063 }
1064 
1066 {
1067  return myFom;
1068 }
1069 
1070 inline RTI::FederateHandle DtExerciseConn::fedHandle() const
1071 {
1072  return myFedHandle;
1073 }
1074 
1075 #if DtHLA_1516_EVOLVED
1076 inline const DtString& DtExerciseConn::fedName() const
1077 {
1078  return myFedName;
1079 }
1080 #endif
1081 
1082 inline const DtString& DtExerciseConn::fedType() const
1083 {
1084  return myFedType;
1085 }
1086 
1087 inline const DtString& DtExerciseConn::execName() const
1088 {
1089  return myExecName;
1090 }
1091 
1092 
1093 inline void DtExerciseConn::setSendFedTime(bool flag)
1094 {
1095  mySendFedTimeFlag = flag;
1096 }
1097 
1098 inline bool DtExerciseConn::sendFedTime() const
1099 {
1100  return mySendFedTimeFlag;
1101 }
1102 
1104 {
1105  myUseGeographicDdm = flag;
1106 }
1107 
1109 {
1110  return myUseGeographicDdm;
1111 }
1112 
1114 {
1115  myDeleteOnOutOfScope = yesNo;
1116 }
1117 
1119 {
1120  return myDeleteOnOutOfScope;
1121 }
1122 
1123 #endif
1124 #endif
1125 

Document ID: Generated on Wed Jan 7 13:31:29 EST 2015 from SVN revision 149162
Copyright © 2005-2014 VT MÄK. All Rights Reserved (www.mak.com)