MAK RTIspy API Documentation for HLA 1.3
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
fedMgr.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 1998 MaK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 /*******************************************************************************
6 ** $RCSfile: fedMgr.h,v $ $Revision: 1.96 $ $State: Exp $
7 *******************************************************************************/
8 
9 #ifndef fedMgr_H_
10 #define fedMgr_H_
11 
14 
15 #include <mtl/fedReader.h>
16 #include <vlutil/vlPrint.h>
17 #include <vlutil/vlTime.h>
18 #include <vlutil/vlString.h>
19 #include <vlutil/vlList.h>
20 #include <vlutil/vlSmartPointers.h>
21 #include <list>
22 #include "resignMsg.h"
23 #include "resignDirectiveMsg.h"
24 #include "RIDparams.h"
25 
26 #if defined(DtIFSPEC1516) || defined(DtIFSPEC1516E)
27 #include "RTI/RTIambassador.h"
28 #include "RTI/LogicalTimeFactory.h"
29 #include "RTI/Enums.h"
30 #else
31 #ifdef DtIFSPEC13DLC
32 #include "RTI13.h"
33 #define RTI rti13
34 #else
35 #include "RTI.hh"
36 #endif
37 #endif
38 
39 class DtRtiSaveFile;
40 class DtFomClassMgr;
41 class DtRIDParameters;
42 class DtObjectMgr;
43 class DtInteractionMgr;
44 class DtTimeMgr;
45 class DtDataDistMgr;
46 class DtMomMgr;
49 class DtResignMsg;
50 class DtSaveInitiateMsg;
51 class DtSaveResponseMsg;
52 class DtSaveFinishedMsg;
53 class DtRestoreReplyMsg;
55 class DtRestoreEndMsg;
56 class DtRestoreMsg;
57 class DtFederateMgr;
58 class DtFedAmbWrapper;
60 class DtAssistantExitMsg;
63 class DtTestManager;
66 class DtLatencyReportMsg;
67 class DtTestMgrStatusMsg;
70 
82 
84 {
85 public:
87  typedef DtFederateMgr* (*DtFederateMgrCreator)(
88  DtRIDParameters* ridParams,
90  DtConnectionMgr* connMgr,
91  DtBoost::shared_ptr<DtRtiAssistantLrcClient> assistantClient);
92 
93  // Callback for PostTick
94  typedef void (*DtFedMgrPostTickCallbackFcn) (void*);
95  typedef std::pair<DtFedMgrPostTickCallbackFcn, void*> DtFedMgrPostTickCallbackInfo;
96  typedef std::map< MAKRti::DtString, DtFedMgrPostTickCallbackInfo > DtPostTickCallbackMap;
97 
98 protected:
99 
102  DtRIDParameters* params,
103  DtRtiAmbassadorBaseImplementor* ambImplPtr,
104  DtConnectionMgr* connMgr,
105  DtBoost::shared_ptr<DtRtiAssistantLrcClient> assistantClient);
106 
107 public:
108 
110  virtual ~DtFederateMgr();
111 
112 private:
113 
115  DtFederateMgr(DtFederateMgr const& );
116 
118  DtFederateMgr& operator= (DtFederateMgr const& );
119 
120 public:
121 
123  virtual void createFederationExecution(
124  const char* executionName, const char* timeImplName,
125 #ifdef DtIFSPEC1516E
126  const std::vector<DtString>& fomModules,
127  const char* mimModule) = 0;
128 #else
129  const char* fed) = 0;
130 #endif
131 
133  virtual void destroyFederationExecution (
134  const char* executionName) = 0;
135 
136 #ifdef DtIFSPEC1516E
137 
138  virtual void listFederationExecutions() = 0;
139 #endif
140 
142 #ifdef DtIFSPEC1516
144  const char* federateType,
145  const char* federationExecutionName,
146  rti1516::FederateAmbassador* federateAmbassador,
147  unsigned long flags) = 0;
148 #elif defined(DtIFSPEC1516E)
150  const char* federateName,
151  const char* federateType,
152  const char* federationExecutionName,
153  const std::vector<DtString>& fomModules,
154  unsigned long flags) = 0;
155 #else
157  const char* yourName,
158  const char* executionName,
159  RTI::FederateAmbassador* federateAmbassadorReference,
160  unsigned long flags) = 0;
161 #endif
162 
164 #ifdef DtIFSPEC1516
165  virtual void resignFederationExecution(
166  rti1516::ResignAction theAction);
167 #elif defined(DtIFSPEC1516E)
168  virtual void resignFederationExecution(
169  rti1516e::ResignAction theAction);
170 #else
171  virtual void resignFederationExecution(
172  RTI::ResignAction theAction);
173 #endif
174 
176 #ifdef DtIFSPEC1516
178  const char* label,
179  rti1516::VariableLengthData const & theTag) = 0;
180 #elif defined(DtIFSPEC1516E)
182  const char* label,
183  rti1516e::VariableLengthData const & theTag) = 0;
184 #else
186  const char* label,
187  const char* theTag) = 0;
188 #endif
189 
191  virtual void waitForResignResponse(bool serviceCall = true);
192 
194 #ifdef DtIFSPEC1516
196  const char* label,
197  rti1516::VariableLengthData const & theTag,
198  DtFederateHandleSet const& syncSet) = 0;
199 #elif defined(DtIFSPEC1516E)
201  const char* label,
202  rti1516e::VariableLengthData const & theTag,
203  DtFederateHandleSet const& syncSet) = 0;
204 #else
206  const char* label,
207  const char* theTag,
208  DtFederateHandleSet const& syncSet) = 0;
209 #endif
210 
212  virtual void synchronizationPointAchieved(const char* label, bool successfully=true) = 0;
213 
217  virtual MAKRti::DtString fedFileName(MAKRti::DtString execName);
218 
222  virtual MAKRti::DtString timeImplName(MAKRti::DtString execName);
223 
225  virtual void init();
226 
228 
229 #ifdef DtIFSPEC1516
230  virtual void setTopLevelAmbassador(rti1516::RTIambassador* ambPtr);
231 #elif defined(DtIFSPEC1516E)
232  virtual void setTopLevelAmbassador(rti1516e::RTIambassador* ambPtr,
233  rti1516e::FederateAmbassador* federateAmbassador);
234 #else
235  virtual void setTopLevelAmbassador(RTI::RTIambassador* ambPtr);
236 #endif
237 
238 
240  virtual bool tick();
241  virtual void pretick();
242  virtual void posttick();
243 
244  virtual void postTickCallbacks();
245 
246  virtual void addPostTickCallback(const MAKRti::DtString& label, const DtFedMgrPostTickCallbackInfo& cb);
247  virtual void removePostTickCallback(const MAKRti::DtString& label);
248 
249 #ifdef DtIFSPEC1516
250 
251  virtual void requestFederationSave ( const char *label,
252  const rti1516::LogicalTime* time=NULL) =0;
253 
255  virtual void queryFederationSaveStatus()=0;
256 
258  virtual void queryFederationRestoreStatus()=0;
259 #elif defined(DtIFSPEC1516E)
260 
261  virtual void requestFederationSave ( const char *label,
262  const rti1516e::LogicalTime* time=NULL) =0;
263 
265  virtual void queryFederationSaveStatus()=0;
266 
268  virtual void queryFederationRestoreStatus()=0;
269 
271  virtual void abortFederationSave () =0;
272 
274  virtual void abortFederationRestore () =0;
275 #else
276 
277  virtual void requestFederationSave ( const char *label,
278  const RTI::FedTime* time=NULL) =0;
279 #endif
280 
282  virtual void federateSaveBegun () =0;
283 
285  virtual void federateSaveComplete () =0;
286 
288  virtual void federateSaveNotComplete () =0;
289 
291  virtual void requestFederationRestore ( const char *label) =0;
292 
294  virtual void federateRestoreComplete () =0;
295 
297  virtual void federateRestoreNotComplete () =0;
298 
300  virtual char* getTransportationName(MAKRti::DtTransportType transport);
301 
303  virtual char* getOrderName(MAKRti::DtOrderType order);
304 
306  virtual MAKRti::DtTransportType getTransportationHandle(MAKRti::DtString transport);
307 
309  virtual MAKRti::DtOrderType getOrderHandle(MAKRti::DtString order);
310 
312  virtual DtFederateHandle federateHandle() const;
313 
315  virtual MAKRti::DtString const & fedType() const;
316 
318  virtual MAKRti::DtString const & fedName() const;
319 
321  virtual MAKRti::DtString const & fedExName() const;
322 
324  virtual unsigned long fedExHandle() const;
325 
327  virtual bool isJoined() const;
328 
330 
331 #ifdef DtIFSPEC1516
332  rti1516::RTIambassador* rtiAmb();
333  rti1516::RTIambassador* rtiAmb() const;
334 #elif defined(DtIFSPEC1516E)
335  rti1516e::RTIambassador* rtiAmb();
336  rti1516e::RTIambassador* rtiAmb() const;
337 #else
338  RTI::RTIambassador* rtiAmb();
339  RTI::RTIambassador* rtiAmb() const;
340 #endif
341 
342 
344 
345 #ifdef DtIFSPEC1516
346  virtual rti1516::FederateAmbassador * federateAmbassador() const;
347 #elif defined(DtIFSPEC1516E)
348  virtual rti1516e::FederateAmbassador * federateAmbassador() const;
349 #else
350  virtual RTI::FederateAmbassador * federateAmbassador() const;
351 #endif
352 
353 
355  virtual DtConnectionMgr* connectMgr();
356  virtual DtConnectionMgr* connectMgr() const;
357 
359  virtual DtRIDParameters* params();
360  virtual DtRIDParameters* params() const;
361 
363  virtual DtFomClassMgr* fom();
364  virtual DtFomClassMgr* fom() const;
365 
367  virtual DtInteractionMgr* interMgr();
368  virtual DtInteractionMgr* interMgr() const;
369 
371  virtual DtTestManager* testMgr();
372  virtual DtTestManager* testMgr() const;
373 
375  virtual DtObjectMgr* objMgr();
376  virtual DtObjectMgr* objMgr() const;
377 
378 #ifdef DtTIME
379 
380  virtual DtTimeMgr* timeMgr();
381  virtual DtTimeMgr* timeMgr() const;
382 #endif
383 
385  virtual DtLogicalTimeFactory* timeFactory();
386  virtual DtLogicalTimeFactory* timeFactory() const;
387 
388 #ifdef DtMOM
389 
390  virtual DtMomMgr* momMgr();
391  virtual DtMomMgr* momMgr() const;
392 #endif
393 
394 #ifdef DDM
395 
396  virtual DtDataDistMgr* ddmMgr();
397  virtual DtDataDistMgr* ddmMgr() const;
398 #endif
399 
401  virtual DtRtiAssistantLrcClient* assistantClient();
402  virtual DtRtiAssistantLrcClient* assistantClient() const;
403 
405  virtual bool isJoinedFederate(DtFederateHandle federateHandleValue) const;
406 
408  virtual bool forcedToResign() const;
409 
411  virtual void setMomResign();
412 
414  virtual void resetMomResign();
415 
417  virtual bool saveInitiated() const;
418 
420  virtual bool saveBegun() const;
421 
423  virtual bool restoreRequested() const;
424 
426  virtual bool restoreInitiated() const;
427 
429  virtual bool restoreBegun() const;
430 
432  virtual const MAKRti::DtString& restoreLabel() const;
433 
435  virtual const MAKRti::DtString& lastRestoreLabel() const;
436 
438  const MAKRti::DtString& currentFedFileName() const;
439  void setCurrentFedFileName( const MAKRti::DtString& );
440 
442  const MAKRti::DtString& mimName() const;
443  void setMimName( const MAKRti::DtString& );
444 
445 #ifdef DtIFSPEC1516E
446 
447  void addFomModule( const MAKRti::DtString& name, char* buffer );
448 
450  const std::vector<std::wstring>& fomModuleNames() const;
451 
453  void addJoinFomModuleNames(const std::vector<MAKRti::DtString>& moduleNames);
454  const std::vector<std::wstring>& joinFomModuleNames() const;
455 
458  const char* fomModuleData(MAKRti::DtU32 moduleIndicator) const;
459 
462  const char* joinFomModuleData(MAKRti::DtU32 moduleIndicator) const;
463 
465  const char* mimData() const;
466 #endif
467 
469  const MAKRti::DtString& currentTimeImplName() const;
470  void setCurrentTimeImplName( const MAKRti::DtString& );
471 
473  virtual const MAKRti::DtString& saveLabel() const;
474  virtual void setSaveLabel(const MAKRti::DtString& value);
475 
477  virtual const MAKRti::DtString& lastSaveLabel() const;
478  virtual void setLastSaveLabel(const MAKRti::DtString& value);
479 
480 
482  virtual void testSaveProgress() = 0;
483 
486  virtual void initiateSave();
487 
490 #ifdef DtIFSPEC1516
491  virtual void initiateTimedSave(rti1516::LogicalTime const& saveTime);
492 #elif defined(DtIFSPEC1516E)
493  virtual void initiateTimedSave(rti1516e::LogicalTime const& saveTime);
494 #else
495  virtual void initiateTimedSave(RTI::FedTime const& saveTime);
496 #endif
497 
499  virtual bool save( DtRtiSaveFile& file ){ return true;};
500 
502  virtual bool restore( DtRtiSaveFile& file ){ return true;};
503 
509  virtual MAKRti::DtString& getSaveFileName(const char* label,
510  DtFederateHandle fedHandle, MAKRti::DtString& fileName,
511  bool extendName=true);
512 
518  virtual MAKRti::DtString& getRestoreFileName(const char* label,
519  DtFederateHandle fedHandle, MAKRti::DtString& fileName);
520 
522  virtual unsigned long tickCount() const;
523 
525  virtual bool isTicking() const;
526 
528  virtual void reportLatencyTestResults( const DtLatencyReportMsg& msg );
529 
531  virtual void reportLatencyTestStatus( const DtTestMgrStatusMsg& msg );
532 
533  unsigned long flags() const;
534 
535  DtResignAction automaticResignDirective() const;
536 
537 #ifdef DtIFSPEC1516E
538  virtual rti1516e::ResignAction getAutomaticResignDirective() const;
539 
542  virtual void setAutomaticResignDirective( const rti1516e::ResignAction action );
543 
545  virtual const MAKRti::DtString& getFederateNameFromHandle( DtFederateHandle handle );
546  virtual DtFederateHandle getFederateHandleFromName( const MAKRti::DtString& name );
547 #endif
548 
549 public:
550 
557  static DtFederateMgr* create(
558  DtRIDParameters* params,
559  DtRtiAmbassadorBaseImplementor* ambImplPtr,
560  DtConnectionMgr* connMgr,
561  DtBoost::shared_ptr<DtRtiAssistantLrcClient> assistantClient);
562 
565  static void setCreatorFunction(DtFederateMgrCreator fn);
566 
571  static void setInternalCreatorFunction(DtFederateMgrCreator fn);
572 
573 protected:
574 
578 
579 
581  virtual void processResign(const DtResignMsg& msg);
582 
584  virtual void processEnableDisableNetworkTesting( const DtEnableDisableNetworkTestingMsg& msg );
585 
587  virtual void processSaveInitiate(const DtSaveInitiateMsg& msg);
588 
590  virtual void processSaveResponse(const DtSaveResponseMsg& msg);
591 
593  virtual void processSaveFinished(const DtSaveFinishedMsg& msg);
594 
596  virtual void processRestoreReply(const DtRestoreReplyMsg& msg);
597 
599  virtual void processRestoreInitiate(const DtRestoreInitiateMsg& msg);
600 
602  virtual void processRestoreEnd(const DtRestoreEndMsg& msg);
603 
605  virtual void processRestore(const DtRestoreMsg& msg);
607 
611 
612 
613  virtual void processAssistantResign(const DtAssistantExitMsg& msg);
614 
616  virtual void processAssistantEnableLogging(const DtAssistantLogEnableMsg& msg);
617 
619  virtual void processSignalTickInterval( const DtAssistantFederateSignalTickIntervalMsg& msg );
620 
622  virtual void processRidParamRequest( const DtAssistantRidParamsMsg& msg );
624 
625 #ifdef DtIFSPEC1516E
626 
627  virtual void processResignDirective( const DtResignDirectiveMsg& msg );
628 #endif
629 
631  virtual void sendAlive();
632 
634  virtual void sendResignMsg(const char* fedExName,
635  DtFederateHandle fedHandle, DtResignAction action);
636 
638  void sendTickedMsg();
639 
641  virtual void applyRidParameters();
642 
647  virtual MAKRti::DtFilename fedFileNameToUse(MAKRti::DtString fileName, MAKRti::DtString executionName );
648 
650  virtual void testReadFedFile(MAKRti::DtString fileName, MAKRti::DtString executionName);
651 
654  virtual void readFedFile(MAKRti::DtString fileName, MAKRti::DtString executionName);
655 
658  virtual void readFedFilePtr( const FILE* fp,
659  const MAKRti::DtString& fileName,
660  const MAKRti::DtString& executionName );
661 
664  virtual void addFedExNameMapping(const MAKRti::DtString& execName,
665  const MAKRti::DtString& timeImplName, const MAKRti::DtString& fed);
666 
667  virtual void addFomModuleNameMapping( const MAKRti::DtString executionName,
668  const std::vector<MAKRti::DtString>& modules);
669 
670  virtual void addFomModuleNameMapping( const MAKRti::DtString executionName,
671  const MAKRti::DtString& modules );
672 
674 #ifdef DtIFSPEC1516
675  virtual DtResignAction testResign(rti1516::ResignAction theAction);
676 #elif defined(DtIFSPEC1516E)
677  virtual DtResignAction testResign(rti1516e::ResignAction theAction);
678 #else
679  virtual DtResignAction testResign(RTI::ResignAction theAction);
680 #endif
681 
684  virtual void postJoinInit(
685  const char* federateType,
686  const char* executionName,
687  const char* federateName
688 #ifdef DtIFSPEC1516
689  , rti1516::FederateAmbassador* federateAmbassadorReference);
690 #elif defined(DtIFSPEC1516E)
691  );
692 #else
693  , RTI::FederateAmbassador* federateAmbassadorReference);
694 #endif
695 
696  virtual void postJoinConfirmInit();
697 
698 protected:
699 
703 
704 
706  static void processResign(const DtResignMsg& msg, void* usr);
707 
709  static void processEnableDisableNetworkTesting(const DtEnableDisableNetworkTestingMsg& msg, void* usr );
710 
712  static void processSaveInitiate(const DtSaveInitiateMsg& msg, void* usr);
713 
715  static void processSaveResponse(const DtSaveResponseMsg& msg, void* usr);
716 
718  static void processSaveFinished(const DtSaveFinishedMsg& msg, void* usr);
719 
721  static void processRestoreReply(const DtRestoreReplyMsg& msg, void* usr);
722 
724  static void processRestore(const DtRestoreMsg& msg, void* usr);
725 
727  static void processRestoreInitiate(const DtRestoreInitiateMsg& msg,
728  void* usr);
729 
731  static void processRestoreEnd(const DtRestoreEndMsg& msg, void* usr);
733 
734 
738 
739 
740  static void processAssistantResign(const DtAssistantExitMsg& msg, void* usr);
741 
743  static void processAssistantEnableLogging(const DtAssistantLogEnableMsg& msg, void* usr);
744 
746  static void processSignalTickInterval( const DtAssistantFederateSignalTickIntervalMsg& msg, void* usr );
747 
749  static void processRidParamRequest( const DtAssistantRidParamsMsg& msg, void* usr );
751 
752 #ifdef DtIFSPEC1516E
753 
754  static void processResignDirective( const DtResignDirectiveMsg& msg, void* usr );
755 #endif
756 
759 
760 
762  virtual void createObjectMgr();
763 
765  virtual void createInteractionMgr();
766 
768  virtual void createDdmMgr();
769 
771  virtual void createTimeMgr();
772 
774  virtual void createMomMgr();
775 
777  virtual void createTestMgr();
778 
780 
781 #ifdef DtIFSPEC1516
782  virtual MAKRti::DtResignAction convertResignAction(rti1516::ResignAction) const;
783  virtual rti1516::ResignAction convertResignAction(MAKRti::DtResignAction) const;
784 #elif defined(DtIFSPEC1516E)
785  virtual MAKRti::DtResignAction convertResignAction(rti1516e::ResignAction) const;
786  virtual rti1516e::ResignAction convertResignAction(MAKRti::DtResignAction) const;
787 #else
788  virtual MAKRti::DtResignAction convertResignAction(RTI::ResignAction) const;
789  virtual RTI::ResignAction convertResignAction(MAKRti::DtResignAction) const;
790 #endif
791 
792 public:
793 
794  //In order to correctly stop evokeCallback we need to know what has reached a
795  //federate Ambassador. So we are puttling this boolean here in order to do that
796  //Accessors should be made once we know this works.
798 
799 protected:
800 
801  DtFedReader * getReader( DtFomType theFomType, DtFomClassMgr* target);
802  DtFedReader * getReader( DtFomType theFomType );
803  void addToParsedFomMap( DtFedReader * myFedReader, const MAKRti::DtString & fileNameToUse, DtFomClassMgr* fedTarget, unsigned long theCrc = 0);
804 
805  MAKRti::DtFilename & getStandardMimPath();
806 
808 #ifdef DtIFSPEC1516
809  rti1516::RTIambassador* myRtiAmb;
810 #elif defined(DtIFSPEC1516E)
811  rti1516e::RTIambassador* myRtiAmb;
812 #else
814 #endif
815 
818 
821 
822 
825 
828 
831 
834 
836  DtMomMgr* myMomMgr;
837 
838 #ifdef DDM
839 
840  DtDataDistMgr* myDdmMgr;
841 #endif
842 #ifdef DtTIME
843 
844  DtTimeMgr* myTimeMgr;
845 #endif
846 
847 
849  MAKRti::DtTime myResponseInterval;
850 
852  MAKRti::DtString myFedExName;
853 
855  unsigned long myFedExHandle;
856 
858  MAKRti::DtString myFedType;
859 
862  MAKRti::DtString myFedName;
863 
866 
868  MAKRti::DtString myCurrentFedFileName;
869 
871  MAKRti::DtString myMimName;
872 
874  MAKRti::DtString myCurrentTimeImplName;
875 
876 #ifdef DtIFSPEC1516E
877 
878  std::vector<std::wstring> myFomModulesNames;
879  std::vector<std::wstring> myJoinFomModulesNames;
880  std::vector<char*> myFomModuleData;
881  unsigned myMimIndex;
882 #endif
883 
885  MAKRti::DtTime myLastHeartbeat;
886 
890 #if defined(DtIFSPEC1516) || defined(DtIFSPEC1516E)
891 #else
893 #endif
894 
897 
900 
901 
904 
906  DtFedReader * myFedReader;
907  DtFedReader * myFedReader13;
908  DtFedReader * myFedReader1516;
909  DtFedReader * myFedReader1516e;
910 
914  MAKRti::DtList myMappingList;
915 
916  std::map<MAKRti::DtString, std::set<MAKRti::DtString> > myFedFileNames;
917 
919  std::map<MAKRti::DtString, DtFomClassMgr*> myParsedFoms;
920 
922  DtBoost::shared_ptr<DtRtiAssistantLrcClient> myAssistantClient;
923 
926 
927 
939  MAKRti::DtString mySaveLabel;
941  MAKRti::DtString myLastSaveLabel;
943  MAKRti::DtString myRestoreLabel;
945  MAKRti::DtString myLastRestoreLabel;
947 
950 
953 
956 
959 
962 
964  MAKRti::DtClock myClock;
965 
967  unsigned long myTickCount;
968 
971 
974 
975  unsigned long myFlags;
976 
979 
982 
985 
987 
988  MAKRti::DtFilename myStandardMimPath;
989 
990 #ifdef DtIFSPEC1516E
991  // our list of Federate Names to Handles and vise-versa
992  std::map< MAKRti::DtString, DtFederateHandle > myFederateNameToHandle;
993  std::map< DtFederateHandle, MAKRti::DtString > myFederateHandleToName;
994 #endif
995 
997  MAKRti::DtResignAction myResignAction;
998 
999 protected:
1001  static DtFederateMgrCreator theCreator;
1002 
1004  static DtFederateMgrCreator theInternalCreator;
1005 };
1006 
1007 #endif
1008 
1009 
1010 

Document ID: Generated on Wed Mar 11 20:26:49 EDT 2015 from SVN revision 150939
Copyright © 2005-2015 VT MÄK Inc. All Rights Reserved (www.mak.com)