MAK RTIspy API Documentation for HLA 1516
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 #ifdef DtIFSPEC1516
193  const char* label,
194  rti1516::VariableLengthData const & theTag,
195  DtFederateHandleSet const& syncSet) = 0;
196 #elif defined(DtIFSPEC1516E)
198  const char* label,
199  rti1516e::VariableLengthData const & theTag,
200  DtFederateHandleSet const& syncSet) = 0;
201 #else
203  const char* label,
204  const char* theTag,
205  DtFederateHandleSet const& syncSet) = 0;
206 #endif
207 
209  virtual void synchronizationPointAchieved(const char* label, bool successfully=true) = 0;
210 
214  virtual MAKRti::DtString fedFileName(MAKRti::DtString execName);
215 
219  virtual MAKRti::DtString timeImplName(MAKRti::DtString execName);
220 
222  virtual void init();
223 
225 
226 #ifdef DtIFSPEC1516
227  virtual void setTopLevelAmbassador(rti1516::RTIambassador* ambPtr);
228 #elif defined(DtIFSPEC1516E)
229  virtual void setTopLevelAmbassador(rti1516e::RTIambassador* ambPtr,
230  rti1516e::FederateAmbassador* federateAmbassador);
231 #else
232  virtual void setTopLevelAmbassador(RTI::RTIambassador* ambPtr);
233 #endif
234 
235 
237  virtual bool tick();
238  virtual void pretick();
239  virtual void posttick();
240 
241  virtual void postTickCallbacks();
242 
243  virtual void addPostTickCallback(const MAKRti::DtString& label, const DtFedMgrPostTickCallbackInfo& cb);
244  virtual void removePostTickCallback(const MAKRti::DtString& label);
245 
246 #ifdef DtIFSPEC1516
247 
248  virtual void requestFederationSave ( const char *label,
249  const rti1516::LogicalTime* time=NULL) =0;
250 
252  virtual void queryFederationSaveStatus()=0;
253 
255  virtual void queryFederationRestoreStatus()=0;
256 #elif defined(DtIFSPEC1516E)
257 
258  virtual void requestFederationSave ( const char *label,
259  const rti1516e::LogicalTime* time=NULL) =0;
260 
262  virtual void queryFederationSaveStatus()=0;
263 
265  virtual void queryFederationRestoreStatus()=0;
266 
268  virtual void abortFederationSave () =0;
269 
271  virtual void abortFederationRestore () =0;
272 #else
273 
274  virtual void requestFederationSave ( const char *label,
275  const RTI::FedTime* time=NULL) =0;
276 #endif
277 
279  virtual void federateSaveBegun () =0;
280 
282  virtual void federateSaveComplete () =0;
283 
285  virtual void federateSaveNotComplete () =0;
286 
288  virtual void requestFederationRestore ( const char *label) =0;
289 
291  virtual void federateRestoreComplete () =0;
292 
294  virtual void federateRestoreNotComplete () =0;
295 
297  virtual char* getTransportationName(MAKRti::DtTransportType transport);
298 
300  virtual char* getOrderName(MAKRti::DtOrderType order);
301 
303  virtual MAKRti::DtTransportType getTransportationHandle(MAKRti::DtString transport);
304 
306  virtual MAKRti::DtOrderType getOrderHandle(MAKRti::DtString order);
307 
309  virtual DtFederateHandle federateHandle() const;
310 
312  virtual MAKRti::DtString const & fedType() const;
313 
315  virtual MAKRti::DtString const & fedName() const;
316 
318  virtual MAKRti::DtString const & fedExName() const;
319 
321  virtual unsigned long fedExHandle() const;
322 
324  virtual bool isJoined() const;
325 
327 
328 #ifdef DtIFSPEC1516
329  rti1516::RTIambassador* rtiAmb();
330  rti1516::RTIambassador* rtiAmb() const;
331 #elif defined(DtIFSPEC1516E)
332  rti1516e::RTIambassador* rtiAmb();
333  rti1516e::RTIambassador* rtiAmb() const;
334 #else
335  RTI::RTIambassador* rtiAmb();
336  RTI::RTIambassador* rtiAmb() const;
337 #endif
338 
339 
341 
342 #ifdef DtIFSPEC1516
343  virtual rti1516::FederateAmbassador * federateAmbassador() const;
344 #elif defined(DtIFSPEC1516E)
345  virtual rti1516e::FederateAmbassador * federateAmbassador() const;
346 #else
347  virtual RTI::FederateAmbassador * federateAmbassador() const;
348 #endif
349 
350 
352  virtual DtConnectionMgr* connectMgr();
353  virtual DtConnectionMgr* connectMgr() const;
354 
356  virtual DtRIDParameters* params();
357  virtual DtRIDParameters* params() const;
358 
360  virtual DtFomClassMgr* fom();
361  virtual DtFomClassMgr* fom() const;
362 
364  virtual DtInteractionMgr* interMgr();
365  virtual DtInteractionMgr* interMgr() const;
366 
368  virtual DtTestManager* testMgr();
369  virtual DtTestManager* testMgr() const;
370 
372  virtual DtObjectMgr* objMgr();
373  virtual DtObjectMgr* objMgr() const;
374 
375 #ifdef DtTIME
376 
377  virtual DtTimeMgr* timeMgr();
378  virtual DtTimeMgr* timeMgr() const;
379 #endif
380 
382  virtual DtLogicalTimeFactory* timeFactory();
383  virtual DtLogicalTimeFactory* timeFactory() const;
384 
385 #ifdef DtMOM
386 
387  virtual DtMomMgr* momMgr();
388  virtual DtMomMgr* momMgr() const;
389 #endif
390 
391 #ifdef DDM
392 
393  virtual DtDataDistMgr* ddmMgr();
394  virtual DtDataDistMgr* ddmMgr() const;
395 #endif
396 
398  virtual DtRtiAssistantLrcClient* assistantClient();
399  virtual DtRtiAssistantLrcClient* assistantClient() const;
400 
402  virtual bool isJoinedFederate(DtFederateHandle federateHandleValue) const;
403 
405  virtual bool forcedToResign() const;
406 
408  virtual bool saveInitiated() const;
409 
411  virtual bool saveBegun() const;
412 
414  virtual bool restoreRequested() const;
415 
417  virtual bool restoreInitiated() const;
418 
420  virtual bool restoreBegun() const;
421 
423  virtual const MAKRti::DtString& restoreLabel() const;
424 
426  virtual const MAKRti::DtString& lastRestoreLabel() const;
427 
429  const MAKRti::DtString& currentFedFileName() const;
430  void setCurrentFedFileName( const MAKRti::DtString& );
431 
433  const MAKRti::DtString& mimName() const;
434  void setMimName( const MAKRti::DtString& );
435 
436 #ifdef DtIFSPEC1516E
437 
438  void addFomModule( const MAKRti::DtString& name, char* buffer );
439 
441  const std::vector<std::wstring>& fomModuleNames() const;
442 
444  void addJoinFomModuleNames(const std::vector<MAKRti::DtString>& moduleNames);
445  const std::vector<std::wstring>& joinFomModuleNames() const;
446 
449  const char* fomModuleData(MAKRti::DtU32 moduleIndicator) const;
450 
453  const char* joinFomModuleData(MAKRti::DtU32 moduleIndicator) const;
454 
456  const char* mimData() const;
457 #endif
458 
460  const MAKRti::DtString& currentTimeImplName() const;
461  void setCurrentTimeImplName( const MAKRti::DtString& );
462 
464  virtual const MAKRti::DtString& saveLabel() const;
465  virtual void setSaveLabel(const MAKRti::DtString& value);
466 
468  virtual const MAKRti::DtString& lastSaveLabel() const;
469  virtual void setLastSaveLabel(const MAKRti::DtString& value);
470 
471 
473  virtual void testSaveProgress() = 0;
474 
477  virtual void initiateSave();
478 
481 #ifdef DtIFSPEC1516
482  virtual void initiateTimedSave(rti1516::LogicalTime const& saveTime);
483 #elif defined(DtIFSPEC1516E)
484  virtual void initiateTimedSave(rti1516e::LogicalTime const& saveTime);
485 #else
486  virtual void initiateTimedSave(RTI::FedTime const& saveTime);
487 #endif
488 
490  virtual bool save( DtRtiSaveFile& file ){ return true;};
491 
493  virtual bool restore( DtRtiSaveFile& file ){ return true;};
494 
500  virtual MAKRti::DtString& getSaveFileName(const char* label,
501  DtFederateHandle fedHandle, MAKRti::DtString& fileName,
502  bool extendName=true);
503 
509  virtual MAKRti::DtString& getRestoreFileName(const char* label,
510  DtFederateHandle fedHandle, MAKRti::DtString& fileName);
511 
513  virtual unsigned long tickCount() const;
514 
516  virtual bool isTicking() const;
517 
519  virtual void reportLatencyTestResults( const DtLatencyReportMsg& msg );
520 
522  virtual void reportLatencyTestStatus( const DtTestMgrStatusMsg& msg );
523 
526  virtual void setWebServerConnected( bool connected );
527 
528  unsigned long flags() const;
529 
530  DtResignAction automaticResignDirective() const;
531 
532 #ifdef DtIFSPEC1516E
533  virtual rti1516e::ResignAction getAutomaticResignDirective() const;
534 
537  virtual void setAutomaticResignDirective( const rti1516e::ResignAction action );
538 
540  virtual const MAKRti::DtString& getFederateNameFromHandle( DtFederateHandle handle );
541  virtual DtFederateHandle getFederateHandleFromName( const MAKRti::DtString& name );
542 #endif
543 
544 public:
545 
552  static DtFederateMgr* create(
553  DtRIDParameters* params,
554  DtRtiAmbassadorBaseImplementor* ambImplPtr,
555  DtConnectionMgr* connMgr,
556  DtBoost::shared_ptr<DtRtiAssistantLrcClient> assistantClient);
557 
560  static void setCreatorFunction(DtFederateMgrCreator fn);
561 
566  static void setInternalCreatorFunction(DtFederateMgrCreator fn);
567 
568 protected:
569 
573 
574 
576  virtual void processResign(const DtResignMsg& msg);
577 
579  virtual void processEnableDisableNetworkTesting( const DtEnableDisableNetworkTestingMsg& msg );
580 
582  virtual void processSaveInitiate(const DtSaveInitiateMsg& msg);
583 
585  virtual void processSaveResponse(const DtSaveResponseMsg& msg);
586 
588  virtual void processSaveFinished(const DtSaveFinishedMsg& msg);
589 
591  virtual void processRestoreReply(const DtRestoreReplyMsg& msg);
592 
594  virtual void processRestoreInitiate(const DtRestoreInitiateMsg& msg);
595 
597  virtual void processRestoreEnd(const DtRestoreEndMsg& msg);
598 
600  virtual void processRestore(const DtRestoreMsg& msg);
602 
606 
607 
608  virtual void processAssistantResign(const DtAssistantExitMsg& msg);
609 
611  virtual void processAssistantEnableLogging(const DtAssistantLogEnableMsg& msg);
612 
614  virtual void processSignalTickInterval( const DtAssistantFederateSignalTickIntervalMsg& msg );
615 
617  virtual void processRidParamRequest( const DtAssistantRidParamsMsg& msg );
619 
620 #ifdef DtIFSPEC1516E
621 
622  virtual void processResignDirective( const DtResignDirectiveMsg& msg );
623 #endif
624 
626  virtual void sendAlive();
627 
629  virtual void sendResignMsg(const char* fedExName,
630  DtFederateHandle fedHandle, DtResignAction action);
631 
633  void sendTickedMsg();
634 
636  virtual void applyRidParameters();
637 
642  virtual MAKRti::DtFilename fedFileNameToUse(MAKRti::DtString fileName, MAKRti::DtString executionName );
643 
645  virtual void testReadFedFile(MAKRti::DtString fileName, MAKRti::DtString executionName);
646 
649  virtual void readFedFile(MAKRti::DtString fileName, MAKRti::DtString executionName);
650 
653  virtual void readFedFilePtr( const FILE* fp,
654  const MAKRti::DtString& fileName,
655  const MAKRti::DtString& executionName );
656 
659  virtual void addFedExNameMapping(const MAKRti::DtString& execName,
660  const MAKRti::DtString& timeImplName, const MAKRti::DtString& fed);
661 
662  virtual void addFomModuleNameMapping( const MAKRti::DtString executionName,
663  const std::vector<MAKRti::DtString>& modules);
664 
665  virtual void addFomModuleNameMapping( const MAKRti::DtString executionName,
666  const MAKRti::DtString& modules );
667 
669 #ifdef DtIFSPEC1516
670  virtual DtResignAction testResign(rti1516::ResignAction theAction);
671 #elif defined(DtIFSPEC1516E)
672  virtual DtResignAction testResign(rti1516e::ResignAction theAction);
673 #else
674  virtual DtResignAction testResign(RTI::ResignAction theAction);
675 #endif
676 
679  virtual void postJoinInit(
680  const char* federateType,
681  const char* executionName,
682  const char* federateName
683 #ifdef DtIFSPEC1516
684  , rti1516::FederateAmbassador* federateAmbassadorReference);
685 #elif defined(DtIFSPEC1516E)
686  );
687 #else
688  , RTI::FederateAmbassador* federateAmbassadorReference);
689 #endif
690 
691 protected:
692 
696 
697 
699  static void processResign(const DtResignMsg& msg, void* usr);
700 
702  static void processEnableDisableNetworkTesting(const DtEnableDisableNetworkTestingMsg& msg, void* usr );
703 
705  static void processSaveInitiate(const DtSaveInitiateMsg& msg, void* usr);
706 
708  static void processSaveResponse(const DtSaveResponseMsg& msg, void* usr);
709 
711  static void processSaveFinished(const DtSaveFinishedMsg& msg, void* usr);
712 
714  static void processRestoreReply(const DtRestoreReplyMsg& msg, void* usr);
715 
717  static void processRestore(const DtRestoreMsg& msg, void* usr);
718 
720  static void processRestoreInitiate(const DtRestoreInitiateMsg& msg,
721  void* usr);
722 
724  static void processRestoreEnd(const DtRestoreEndMsg& msg, void* usr);
726 
727 
731 
732 
733  static void processAssistantResign(const DtAssistantExitMsg& msg, void* usr);
734 
736  static void processAssistantEnableLogging(const DtAssistantLogEnableMsg& msg, void* usr);
737 
739  static void processSignalTickInterval( const DtAssistantFederateSignalTickIntervalMsg& msg, void* usr );
740 
742  static void processRidParamRequest( const DtAssistantRidParamsMsg& msg, void* usr );
744 
745 #ifdef DtIFSPEC1516E
746 
747  static void processResignDirective( const DtResignDirectiveMsg& msg, void* usr );
748 #endif
749 
752 
753 
755  virtual void createObjectMgr();
756 
758  virtual void createInteractionMgr();
759 
761  virtual void createDdmMgr();
762 
764  virtual void createTimeMgr();
765 
767  virtual void createMomMgr();
768 
770  virtual void createTestMgr();
771 
773 
774 #ifdef DtIFSPEC1516
775  virtual MAKRti::DtResignAction convertResignAction(rti1516::ResignAction) const;
776  virtual rti1516::ResignAction convertResignAction(MAKRti::DtResignAction) const;
777 #elif defined(DtIFSPEC1516E)
778  virtual MAKRti::DtResignAction convertResignAction(rti1516e::ResignAction) const;
779  virtual rti1516e::ResignAction convertResignAction(MAKRti::DtResignAction) const;
780 #else
781  virtual MAKRti::DtResignAction convertResignAction(RTI::ResignAction) const;
782  virtual RTI::ResignAction convertResignAction(MAKRti::DtResignAction) const;
783 #endif
784 
785 protected:
786 
787  DtFedReader * getReader( DtFomType theFomType, DtFomClassMgr* target);
788  DtFedReader * getReader( DtFomType theFomType );
789  void addToParsedFomMap( DtFedReader * myFedReader, const MAKRti::DtString & fileNameToUse, DtFomClassMgr* fedTarget, unsigned long theCrc = 0);
791 #ifdef DtIFSPEC1516
792  rti1516::RTIambassador* myRtiAmb;
793 #elif defined(DtIFSPEC1516E)
794  rti1516e::RTIambassador* myRtiAmb;
795 #else
797 #endif
798 
801 
804 
805 
808 
811 
814 
817 
819  DtMomMgr* myMomMgr;
820 
821 #ifdef DDM
822 
823  DtDataDistMgr* myDdmMgr;
824 #endif
825 #ifdef DtTIME
826 
827  DtTimeMgr* myTimeMgr;
828 #endif
829 
830 
832  MAKRti::DtTime myResponseInterval;
833 
835  MAKRti::DtString myFedExName;
836 
838  unsigned long myFedExHandle;
839 
841  MAKRti::DtString myFedType;
842 
845  MAKRti::DtString myFedName;
846 
849 
851  MAKRti::DtString myCurrentFedFileName;
852 
854  MAKRti::DtString myMimName;
855 
857  MAKRti::DtString myCurrentTimeImplName;
858 
859 #ifdef DtIFSPEC1516E
860 
861  std::vector<std::wstring> myFomModulesNames;
862  std::vector<std::wstring> myJoinFomModulesNames;
863  std::vector<char*> myFomModuleData;
864  int myMimIndex;
865 #endif
866 
868  MAKRti::DtTime myLastHeartbeat;
869 
873 #if defined(DtIFSPEC1516) || defined(DtIFSPEC1516E)
874 #else
876 #endif
877 
880 
883 
884 
887 
889  DtFedReader * myFedReader;
890  DtFedReader * myFedReader13;
891  DtFedReader * myFedReader1516;
892  DtFedReader * myFedReader1516e;
893 
897  MAKRti::DtList myMappingList;
898 
899  std::map<MAKRti::DtString, std::set<MAKRti::DtString> > myFedFileNames;
900 
902  std::map<MAKRti::DtString, DtFomClassMgr*> myParsedFoms;
903 
905  DtBoost::shared_ptr<DtRtiAssistantLrcClient> myAssistantClient;
906 
909 
910 
922  MAKRti::DtString mySaveLabel;
924  MAKRti::DtString myLastSaveLabel;
926  MAKRti::DtString myRestoreLabel;
928  MAKRti::DtString myLastRestoreLabel;
930 
933 
936 
938  MAKRti::DtClock myClock;
939 
941  unsigned long myTickCount;
942 
945 
948 
951 
952  unsigned long myFlags;
953 
956 
959 
962 
964 
965 #ifdef DtIFSPEC1516E
966  // our list of Federate Names to Handles and vise-versa
967  std::map< MAKRti::DtString, DtFederateHandle > myFederateNameToHandle;
968  std::map< DtFederateHandle, MAKRti::DtString > myFederateHandleToName;
969 #endif
970 
972  MAKRti::DtResignAction myResignAction;
973 
974 protected:
976  static DtFederateMgrCreator theCreator;
977 
979  static DtFederateMgrCreator theInternalCreator;
980 };
981 
982 #endif
983 
984 
985 

Document ID: Generated on Tue May 7 16:26:47 EDT 2013 from SVN revision 126903
Copyright © 2005-2013 VT MÄK Inc. All Rights Reserved (www.mak.com)