VR-Link API Documentation for HLA 1.3
hExerciseConn.h
Go to the documentation of this file.
1 /*********************************************************************
2 ** Copyright (c) 1992-2010 VT MAK
3 ** All rights reserved.
4 *********************************************************************/
8 
9 #ifndef hExerciseConn_H_
10 #define hExerciseConn_H_
11 
12 #if DtHLA
13 
14 #include "baseExConn.h"
15 #include "callbacks.h"
16 #include "rprFomMap.h"
17 #include "rtiCompatibility.h"
18 #include "eventId.h"
19 #include "vrlFedAmb.h"
20 #include "vrlRtiAmb.h"
21 
22 #include <matrix/geodCoord.h>
23 #include <vlutil/vlVersion.h>
24 #include "userTagModifiers.h"
25 
26 
27 class DtInteraction;
29 class DtHlaObjectFactory;
31 class DtHlaObjectManager;
32 class DtStateMsg;
34 class DtFom;
35 class DtFilename;
36 class DtDynamicLibrary;
37 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 
69  typedef DtVrlRtiAmbassador* (*DtRtiAmbCreator)(const std::vector<std::wstring>&);
70 
71 #if DtHLA_1516
72  typedef DtTime (*DtLogicalTimeToVrlTimeConverter) (const RTI::LogicalTime &theLogicalTime);
73  typedef std::auto_ptr<RTI::LogicalTime>(*DtVrlTimeToLogicalTimeConverter) (const DtTime &time);
74 #else
75  typedef DtTime (*DtFedTimeToVrlTimeConverter) (const RTI::FedTime &theFedTIme);
76  typedef RTI::FedTime* (*DtVrlTimeToFedTimeConverter) (const DtTime &time);
77 #endif
78 
89  DtINIT_SUCCESS = 0,
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
98 
99  };
100 
101 public:
102 
105  DtExerciseConn(const DtExerciseConnInitializer& init, InitializationStatus* status = 0);
106 
118  DtExerciseConn(const char* execName,
119  const char* federateType,
120  DtFomMapper* mapper = DtRprFomMapper::create(0),
121  const char* fedFileName = 0,
122  InitializationStatus* status = 0
123  );
124 
132  DtExerciseConn(const char* execName,
133  const char* federateType,
134  const char* dsoName,
135  const char* fedFileName = 0,
136  void* fomMapInitData = 0,
137  InitializationStatus* status = 0
138  );
139 
140 #if DtHLA_1516_EVOLVED
141 
142 
147 
158  DtExerciseConn(const char* execName,
159  const char* federateName,
160  const char* federateType,
161  const DtString& fedFile,
162  DtFomMapper* mapper = DtRprFomMapper::create(0),
163  const DtString mimModule = "",
164  const std::vector<DtString>& fomModules = std::vector<DtString>(),
165  InitializationStatus* status = 0 );
166 
167 
172 
179  DtExerciseConn(const char* execName,
180  const char* federateName,
181  const char* federateType,
182  const DtString& fedFile,
183  const char* dsoName,
184  void* fomMapInitData = 0,
185  const DtString mimModule = "",
186  const std::vector<DtString>& fomModules = std::vector<DtString>(),
187  InitializationStatus* status = 0 );
188 #endif
189 
191  virtual ~DtExerciseConn();
192 
193 private:
194 
196  DtExerciseConn(const DtExerciseConn& orig);
197 
200 
201 public:
202 
212  virtual void setReflecting();
213 
215  virtual bool reflecting() const;
216 
228  virtual void setReflectRemoteUpdatesIntoPubFlag(bool onff);
229 
231  virtual bool reflectRemoteUpdatesIntoPubFlag() const;
232 
237  virtual void setReflectingThroughRti();
238 
240  virtual bool reflectingThroughRti() const;
241 
251  virtual void ignoreAdvisories();
252 
254  virtual bool usingAdvisories() const;
255 
256  void setRemoveObjectOnAttOutOfScope(bool remove);
257 
258 
259 #if DtHLA_1516_EVOLVED
260 
261  void listFederationExecutions() const;
262 #endif
263 
267  virtual void send(const DtStateMsg& msg);
268 
274  virtual void send(const DtInteraction& msg);
275 
279 #if DtHLA_1516
280  virtual void send(const DtInteraction& msg,
281  const RTI::RegionHandleSet* region);
282 #else
283  virtual void send(const DtInteraction& msg,
284  const RTI::Region* region);
285 #endif
286 
291  virtual void sendStamped(const DtStateMsg& msg);
292 
297  virtual void sendStamped(const DtInteraction& msg);
298 
302  virtual void sendStampedWithRegion(const DtInteraction& msg,
303  DtDDMRegionSP region);
304 
309 #if DtHLA_1516
310  virtual void sendStamped(const DtInteraction& msg,
311  const RTI::RegionHandleSet* region);
312 #else
313  virtual void sendStamped(const DtInteraction& msg,
314  const RTI::Region* region);
315 #endif
316 
319  virtual DtTime currentTimeForStamping();
320 
335  virtual int drainInput(DtTime maxTime = -1, DtTime minTime = 0.0);
336 
338  virtual void setObjectIdForEventId(const DtGlobalObjectDesignator& id);
339 
341  virtual const DtEventID& nextEventId();
342 
345  virtual DtVrlRtiAmbassador* rtiAmb();
346 
349  virtual DtVrlFederateAmbassador* fedAmb();
350 
352  virtual RTI::FederateHandle fedHandle() const;
353 
355  virtual const DtString& fedType() const;
356 
357 #if DtHLA_1516_EVOLVED
358 
359 
360  virtual const DtString& fedName() const;
361 #endif
362 
364  virtual const DtString& execName() const;
365 
367  virtual bool isUsingMakRti() const;
368 
372  virtual DtString rtiName() const;
373 
377  virtual DtString rtiVersion() const;
378 
381  virtual DtString rtiError() const;
382 
384  virtual DtFom* fom();
385 
387  virtual DtInteractionFactory* interactionFactory();
388 
390  virtual DtHlaObjectFactory* objectFactory();
391 
393  virtual DtFomMapper* fomMapper();
394 
396  virtual DtHlaObjectManager* hlaObjectManager();
397 
399  virtual void setTimeStampType(DtTimeStampType relOrAbs);
400 
402  virtual DtTimeStampType timeStampType() const;
403 
408  virtual void addInteractionCallback(RTI::InteractionClassHandle h,
410  void* usr,
411  DtDDMRegionSP region = DtDDMRegionSP());
412 
417  virtual void addInteractionCallbackByName(const char* className,
419  void* usr,
420  DtDDMRegionSP region = DtDDMRegionSP());
421 
426  virtual void removeInteractionCallback(RTI::InteractionClassHandle h,
428  void* usr,
429  DtDDMRegionSP region = DtDDMRegionSP());
430 
435  virtual void removeInteractionCallbackByName(const char* className,
437  void* usr, DtDDMRegionSP region = DtDDMRegionSP());
438 
441  virtual void addDiscoverObjectCallback(RTI::ObjectClassHandle h,
443  void* usr);
444 
448  virtual void removeDiscoverObjectCallback(RTI::ObjectClassHandle h,
450  void* usr);
451 
454  virtual void addRemoveObjectCallback(
455 #if DtHLA_1516
456  RTI::ObjectInstanceHandle id,
457 #else
458  RTI::ObjectHandle id,
459 #endif
460  DtRemoveObjectCb cb,
461  void* usr);
462 
466  virtual void removeRemoveObjectCallback(
467 #if DtHLA_1516
468  RTI::ObjectInstanceHandle id,
469 #else
470  RTI::ObjectHandle id,
471 #endif
472  DtRemoveObjectCb cb,
473  void* usr);
474 
478  virtual void setDestroyFedExecFlag(bool flag);
479 
481  virtual bool destroyFedExecFlag();
482 
486  virtual void setReplyingToSynchronizationPoints(bool yesNo);
487 
489  virtual bool replyingToSynchronizationPoints();
490 
493  virtual void replyToSynchronizationPoint(const char* label);
494 
499  virtual void setAutoSubscribeFlag(bool flag);
500 
502  virtual bool autoSubscribeFlag() const;
503 
506  virtual void setSendFedTime(bool flag);
507 
509  virtual bool sendFedTime() const;
510 
518  virtual void setUseGeographicDdm(bool flag);
519 
522  virtual bool useGeographicDdm() const;
523 
524  virtual void setDeleteOnOutOfScope(bool yesNo);
525 
526  virtual bool deleteOnOutOfScope() const;
527 
528 #if DtHLA_1516
529 
530  virtual RTI::LogicalTimeFactory *logicalTimeFactory() const;
531 
532 #endif
533 public:
534 
537  virtual void registerSynchronizationPoint(const DtString& label);
538 
540  virtual void registerSynchronizationPoint(
541  const DtString& label,
542 #if DtHLA_1516
543  const RTI::VariableLengthData& tag);
544 #else
545  const DtString& tag);
546 #endif
547 
550  virtual void addSynchPointRegistrationSucceededCb(const DtString& label,
551  DtSynchPointCb func, void* usr);
552 
554  virtual void addSynchPointRegistrationSucceededCb(DtSynchPointCb func,
555  void* usr);
556 
559  virtual void removeSynchPointRegistrationSucceededCb(const DtString& label,
560  DtSynchPointCb func, void* usr);
561 
563  virtual void removeSynchPointRegistrationSucceededCb(DtSynchPointCb func,
564  void* usr);
565 
567  virtual void addSynchPointRegistrationFailedCb(const DtString& label,
568  DtSynchPointCb func, void* usr);
569 
571  virtual void addSynchPointRegistrationFailedCb(DtSynchPointCb func,
572  void* usr);
573 
575  virtual void removeSynchPointRegistrationFailedCb(const DtString& label,
576  DtSynchPointCb func, void* usr);
577 
579  virtual void removeSynchPointRegistrationFailedCb(DtSynchPointCb func,
580  void* usr);
581 
583  virtual void addFederationSynchedCb(const DtString& label,
584  DtSynchPointCb func, void* usr);
585 
587  virtual void addFederationSynchedCb(DtSynchPointCb func,
588  void* usr);
589 
591  virtual void removeFederationSynchedCb(const DtString& label,
592  DtSynchPointCb func, void* usr);
593 
595  virtual void removeFederationSynchedCb(DtSynchPointCb func,
596  void* usr);
597 
598 #if DtHLA_1516_EVOLVED
599 
600  virtual void addConnectionLostCb(DtConnectionLostCb func,
601  void* usr);
603  virtual void removeConnectionLostCb(DtConnectionLostCb func, void *usr);
604 #endif
605 
606 
610  virtual void addAnnounceSynchPointCb(const DtString& label,
611  DtAnnounceSynchPointCb func, void* usr);
612 
616  virtual void addAnnounceSynchPointCb(DtAnnounceSynchPointCb func,
617  void* usr);
618 
620  virtual void removeAnnounceSynchPointCb(const DtString& label,
621  DtAnnounceSynchPointCb func, void* usr);
622 
624  virtual void removeAnnounceSynchPointCb(DtAnnounceSynchPointCb func,
625  void* usr);
626 
629  virtual void setDdmPlayBoxLowerBound(const DtGeodeticCoord& bound);
630 
633  virtual void setDdmPlayBoxUpperBound(const DtGeodeticCoord& bound);
634 
637  virtual const DtGeodeticCoord& ddmPlayBoxLowerBound() const;
638 
641  virtual const DtGeodeticCoord& ddmPlayBoxUpperBound() const;
642 
651  virtual void setObjectTagModifier(const DtString& className,
652  DtObjectTagModifierSP modifier, bool applyToSubClasses = true);
653 
662  virtual void setInteractionTagModifier(const DtString& className,
663  DtInteractionTagModifierSP modifier, bool applyToSubClasses = true);
664 
665 
666 #if DtHLA_1516
667 
668 
669 
670  static void setLogicalTimeFactoryFactoryParameter(std::wstring);
671 
673  static std::wstring logicalTimeFactoryFactoryParameter();
674 #endif
675 
676 
677 
678  static void setFedAmbCreator(DtFedAmbCreator creator);
679 
681  static DtFedAmbCreator fedAmbCreator();
682 
686  static void setRtiAmbCreator(DtRtiAmbCreator creator);
687 
689  static DtRtiAmbCreator rtiAmbCreator();
690 
695  static void overrideRidParameters(const std::map<DtString, DtString>& ridParams);
696 
705  static void setFomMapperCreator(DtFomMapperCreator creator,
706  void* usr = 0);
707 
709  static DtFomMapperCreator fomMapperCreator();
710 
718 #if DtHLA_1516
719  static void setLogicalTimeToVrlTimeConverter(DtLogicalTimeToVrlTimeConverter func);
720  static DtLogicalTimeToVrlTimeConverter logicalTimeToVrlTimeConverter();
721 #else
722  static void setFedTimeToVrlTimeConverter(DtFedTimeToVrlTimeConverter func);
723  static DtFedTimeToVrlTimeConverter fedTimeToVrlTimeConverter();
724 #endif
725 
732 #if DtHLA_1516
733  static void setVrlTimeToLogicalTimeConverter(DtVrlTimeToLogicalTimeConverter func);
734  static DtVrlTimeToLogicalTimeConverter vrlTimeToLogicalTimeConverter();
735 #else
736  static void setVrlTimeToFedTimeConverter(DtVrlTimeToFedTimeConverter func);
737  static DtVrlTimeToFedTimeConverter vrlTimeToFedTimeConverter();
738 #endif
739 
746 #if DtHLA_1516
747  static DtTime defaultDtLogicalTimeToVrlTimeConverter( const RTI::LogicalTime &time);
748 #else
749  static DtTime defaultDtFedTimeToVrlTimeConverter( const RTI::FedTime &time);
750 #endif
751 
753 #if DtHLA_1516
754  static std::auto_ptr<RTI::LogicalTime> defaultVrlTimeToLogicalTimeConverter(
755  const DtTime &time);
756 #else
757  static RTI::FedTime* defaultVrlTimeToFedTimeConverter(const DtTime &time);
758 #endif
759 
760 
762  static DtString vrlinkVersion();
763 
764 protected:
765 
766 
768  void initializeConnection(InitializationStatus* result);
769 
772  void initializeFomMapper(const char* dsoName, void* fomMapInitData,
773  InitializationStatus* result);
774 
778  void getFuncsFromSharedLib(DtDynamicLibrary& dso,
779  DtFomMapperCreator* creator,
780  DtFomMapperDeletor* deletor);
781 
782 
785  void handleFedFile(const DtString& fedFileName);
786 
791  int initFom(InitializationStatus* result);
792 
796  int createRtiAmb(InitializationStatus* result);
797 
803  int connectRtiAmb(InitializationStatus* result);
804 
809  int createFedEx(InitializationStatus* result);
810 
813  int createFedAmb(InitializationStatus* result);
814 
818  int joinFedEx(InitializationStatus* result);
819 
823  bool fedFileExists(const DtFilename &name) const;
824 
826  void setFedFile(const DtString& fedFile);
827 
828 #if DtHLA_1516_EVOLVED
829 
830 
831  void setFomModules(const std::vector<DtString>& modules);
832 
834  void resignAndDisconnect();
835 #endif
836 
837 protected:
838 
840  static void replyToSyncPointCallback(void* usr);
841 
842 protected:
843 
845 
847 #if DtHLA_1516_EVOLVED
848 
849 
850 
851 
852  DtString myFedName;
853 #endif
854 #if DtHLA_1516
855  std::auto_ptr<RTI::LogicalTimeFactory> myLogicalTimeFactory;
856 #endif
858  RTI::FederateHandle myFedHandle;
860 
862 
865 
868  DtFomMapperCreator myDsoCreator;
869  DtFomMapperDeletor myDsoDeletor;
870 
873 
876 
884 
887 #if DtHLA_1516_EVOLVED
888 
889  bool myIsConnected;
890 #endif
891 
894 
897 
898 #if DtHLA_1516_EVOLVED
899  std::vector<std::wstring> myFomModules;
900  std::wstring myMimFomModule;
901 
902  std::wstring myLocalSettingsDesignator;
903 #elif DtHLA_1516
904  std::vector<std::wstring> myRtiArguments;
905 #endif
906 
907 #if DtHLA_1516
908  RTI::VariableLengthData myTag;
909 #else
911 #endif
912 
917 
922 
923 protected:
924 
925  static std::wstring myLogicalTimeFactFactParam;
926  static DtFedAmbCreator theFedAmbCreator;
927  static DtRtiAmbCreator theRtiAmbCreator;
928  static DtFomMapperCreator theFomMapperCreator;
929  static void* theFomMapInitData;
930 #if DtHLA_1516
931  static DtVrlTimeToLogicalTimeConverter theVrlTimeToLogicalTimeConverter;
932  static DtLogicalTimeToVrlTimeConverter theLogicalTimeToVrlTimeConverter;
933 #else
934  static DtVrlTimeToFedTimeConverter theVrlTimeToFedTimeConverter;
935  static DtFedTimeToVrlTimeConverter theFedTimeToVrlTimeConverter;
936 #endif
937 
938 
939 
940 };
941 
943 {
944  return myRtiAmb;
945 }
946 
948 {
949  return myFedAmb;
950 }
951 
953 {
954  return myHlaObjectManager;
955 }
956 
958 {
959  return myFom;
960 }
961 
962 inline RTI::FederateHandle DtExerciseConn::fedHandle() const
963 {
964  return myFedHandle;
965 }
966 
967 #if DtHLA_1516_EVOLVED
968 inline const DtString& DtExerciseConn::fedName() const
969 {
970  return myFedName;
971 }
972 #endif
973 
974 inline const DtString& DtExerciseConn::fedType() const
975 {
976  return myFedType;
977 }
978 
979 inline const DtString& DtExerciseConn::execName() const
980 {
981  return myExecName;
982 }
983 
984 
985 inline void DtExerciseConn::setSendFedTime(bool flag)
986 {
987  mySendFedTimeFlag = flag;
988 }
989 
990 inline bool DtExerciseConn::sendFedTime() const
991 {
992  return mySendFedTimeFlag;
993 }
994 
996 {
997  myUseGeographicDdm = flag;
998 }
999 
1001 {
1002  return myUseGeographicDdm;
1003 }
1004 
1006 {
1007  myDeleteOnOutOfScope = yesNo;
1008 }
1009 
1011 {
1012  return myDeleteOnOutOfScope;
1013 }
1014 
1015 #endif
1016 #endif
1017 

Document ID: Generated on Wed Aug 14 15:35:11 EDT 2013 from SVN revision 130445
Copyright © 2005-2013 VT MÄK. All Rights Reserved (www.mak.com)