MAK RTIspy API Documentation for HLA 1.3
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();
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 bool saveInitiated() const;
412 
414  virtual bool saveBegun() const;
415 
417  virtual bool restoreRequested() const;
418 
420  virtual bool restoreInitiated() const;
421 
423  virtual bool restoreBegun() const;
424 
426  virtual const MAKRti::DtString& restoreLabel() const;
427 
429  virtual const MAKRti::DtString& lastRestoreLabel() const;
430 
432  const MAKRti::DtString& currentFedFileName() const;
433  void setCurrentFedFileName( const MAKRti::DtString& );
434 
436  const MAKRti::DtString& mimName() const;
437  void setMimName( const MAKRti::DtString& );
438 
439 #ifdef DtIFSPEC1516E
440 
441  void addFomModule( const MAKRti::DtString& name, char* buffer );
442 
444  const std::vector<std::wstring>& fomModuleNames() const;
445 
447  void addJoinFomModuleNames(const std::vector<MAKRti::DtString>& moduleNames);
448  const std::vector<std::wstring>& joinFomModuleNames() const;
449 
452  const char* fomModuleData(MAKRti::DtU32 moduleIndicator) const;
453 
456  const char* joinFomModuleData(MAKRti::DtU32 moduleIndicator) const;
457 
459  const char* mimData() const;
460 #endif
461 
463  const MAKRti::DtString& currentTimeImplName() const;
464  void setCurrentTimeImplName( const MAKRti::DtString& );
465 
467  virtual const MAKRti::DtString& saveLabel() const;
468  virtual void setSaveLabel(const MAKRti::DtString& value);
469 
471  virtual const MAKRti::DtString& lastSaveLabel() const;
472  virtual void setLastSaveLabel(const MAKRti::DtString& value);
473 
474 
476  virtual void testSaveProgress() = 0;
477 
480  virtual void initiateSave();
481 
484 #ifdef DtIFSPEC1516
485  virtual void initiateTimedSave(rti1516::LogicalTime const& saveTime);
486 #elif defined(DtIFSPEC1516E)
487  virtual void initiateTimedSave(rti1516e::LogicalTime const& saveTime);
488 #else
489  virtual void initiateTimedSave(RTI::FedTime const& saveTime);
490 #endif
491 
493  virtual bool save( DtRtiSaveFile& file ){ return true;};
494 
496  virtual bool restore( DtRtiSaveFile& file ){ return true;};
497 
503  virtual MAKRti::DtString& getSaveFileName(const char* label,
504  DtFederateHandle fedHandle, MAKRti::DtString& fileName,
505  bool extendName=true);
506 
512  virtual MAKRti::DtString& getRestoreFileName(const char* label,
513  DtFederateHandle fedHandle, MAKRti::DtString& fileName);
514 
516  virtual unsigned long tickCount() const;
517 
519  virtual bool isTicking() const;
520 
522  virtual void reportLatencyTestResults( const DtLatencyReportMsg& msg );
523 
525  virtual void reportLatencyTestStatus( const DtTestMgrStatusMsg& msg );
526 
527  unsigned long flags() const;
528 
529  DtResignAction automaticResignDirective() const;
530 
531 #ifdef DtIFSPEC1516E
532  virtual rti1516e::ResignAction getAutomaticResignDirective() const;
533 
536  virtual void setAutomaticResignDirective( const rti1516e::ResignAction action );
537 
539  virtual const MAKRti::DtString& getFederateNameFromHandle( DtFederateHandle handle );
540  virtual DtFederateHandle getFederateHandleFromName( const MAKRti::DtString& name );
541 #endif
542 
543 public:
544 
551  static DtFederateMgr* create(
552  DtRIDParameters* params,
553  DtRtiAmbassadorBaseImplementor* ambImplPtr,
554  DtConnectionMgr* connMgr,
555  DtBoost::shared_ptr<DtRtiAssistantLrcClient> assistantClient);
556 
559  static void setCreatorFunction(DtFederateMgrCreator fn);
560 
565  static void setInternalCreatorFunction(DtFederateMgrCreator fn);
566 
567 protected:
568 
572 
573 
575  virtual void processResign(const DtResignMsg& msg);
576 
578  virtual void processEnableDisableNetworkTesting( const DtEnableDisableNetworkTestingMsg& msg );
579 
581  virtual void processSaveInitiate(const DtSaveInitiateMsg& msg);
582 
584  virtual void processSaveResponse(const DtSaveResponseMsg& msg);
585 
587  virtual void processSaveFinished(const DtSaveFinishedMsg& msg);
588 
590  virtual void processRestoreReply(const DtRestoreReplyMsg& msg);
591 
593  virtual void processRestoreInitiate(const DtRestoreInitiateMsg& msg);
594 
596  virtual void processRestoreEnd(const DtRestoreEndMsg& msg);
597 
599  virtual void processRestore(const DtRestoreMsg& msg);
601 
605 
606 
607  virtual void processAssistantResign(const DtAssistantExitMsg& msg);
608 
610  virtual void processAssistantEnableLogging(const DtAssistantLogEnableMsg& msg);
611 
613  virtual void processSignalTickInterval( const DtAssistantFederateSignalTickIntervalMsg& msg );
614 
616  virtual void processRidParamRequest( const DtAssistantRidParamsMsg& msg );
618 
619 #ifdef DtIFSPEC1516E
620 
621  virtual void processResignDirective( const DtResignDirectiveMsg& msg );
622 #endif
623 
625  virtual void sendAlive();
626 
628  virtual void sendResignMsg(const char* fedExName,
629  DtFederateHandle fedHandle, DtResignAction action);
630 
632  void sendTickedMsg();
633 
635  virtual void applyRidParameters();
636 
641  virtual MAKRti::DtFilename fedFileNameToUse(MAKRti::DtString fileName, MAKRti::DtString executionName );
642 
644  virtual void testReadFedFile(MAKRti::DtString fileName, MAKRti::DtString executionName);
645 
648  virtual void readFedFile(MAKRti::DtString fileName, MAKRti::DtString executionName);
649 
652  virtual void readFedFilePtr( const FILE* fp,
653  const MAKRti::DtString& fileName,
654  const MAKRti::DtString& executionName );
655 
658  virtual void addFedExNameMapping(const MAKRti::DtString& execName,
659  const MAKRti::DtString& timeImplName, const MAKRti::DtString& fed);
660 
661  virtual void addFomModuleNameMapping( const MAKRti::DtString executionName,
662  const std::vector<MAKRti::DtString>& modules);
663 
664  virtual void addFomModuleNameMapping( const MAKRti::DtString executionName,
665  const MAKRti::DtString& modules );
666 
668 #ifdef DtIFSPEC1516
669  virtual DtResignAction testResign(rti1516::ResignAction theAction);
670 #elif defined(DtIFSPEC1516E)
671  virtual DtResignAction testResign(rti1516e::ResignAction theAction);
672 #else
673  virtual DtResignAction testResign(RTI::ResignAction theAction);
674 #endif
675 
678  virtual void postJoinInit(
679  const char* federateType,
680  const char* executionName,
681  const char* federateName
682 #ifdef DtIFSPEC1516
683  , rti1516::FederateAmbassador* federateAmbassadorReference);
684 #elif defined(DtIFSPEC1516E)
685  );
686 #else
687  , RTI::FederateAmbassador* federateAmbassadorReference);
688 #endif
689 
690 protected:
691 
695 
696 
698  static void processResign(const DtResignMsg& msg, void* usr);
699 
701  static void processEnableDisableNetworkTesting(const DtEnableDisableNetworkTestingMsg& msg, void* usr );
702 
704  static void processSaveInitiate(const DtSaveInitiateMsg& msg, void* usr);
705 
707  static void processSaveResponse(const DtSaveResponseMsg& msg, void* usr);
708 
710  static void processSaveFinished(const DtSaveFinishedMsg& msg, void* usr);
711 
713  static void processRestoreReply(const DtRestoreReplyMsg& msg, void* usr);
714 
716  static void processRestore(const DtRestoreMsg& msg, void* usr);
717 
719  static void processRestoreInitiate(const DtRestoreInitiateMsg& msg,
720  void* usr);
721 
723  static void processRestoreEnd(const DtRestoreEndMsg& msg, void* usr);
725 
726 
730 
731 
732  static void processAssistantResign(const DtAssistantExitMsg& msg, void* usr);
733 
735  static void processAssistantEnableLogging(const DtAssistantLogEnableMsg& msg, void* usr);
736 
738  static void processSignalTickInterval( const DtAssistantFederateSignalTickIntervalMsg& msg, void* usr );
739 
741  static void processRidParamRequest( const DtAssistantRidParamsMsg& msg, void* usr );
743 
744 #ifdef DtIFSPEC1516E
745 
746  static void processResignDirective( const DtResignDirectiveMsg& msg, void* usr );
747 #endif
748 
751 
752 
754  virtual void createObjectMgr();
755 
757  virtual void createInteractionMgr();
758 
760  virtual void createDdmMgr();
761 
763  virtual void createTimeMgr();
764 
766  virtual void createMomMgr();
767 
769  virtual void createTestMgr();
770 
772 
773 #ifdef DtIFSPEC1516
774  virtual MAKRti::DtResignAction convertResignAction(rti1516::ResignAction) const;
775  virtual rti1516::ResignAction convertResignAction(MAKRti::DtResignAction) const;
776 #elif defined(DtIFSPEC1516E)
777  virtual MAKRti::DtResignAction convertResignAction(rti1516e::ResignAction) const;
778  virtual rti1516e::ResignAction convertResignAction(MAKRti::DtResignAction) const;
779 #else
780  virtual MAKRti::DtResignAction convertResignAction(RTI::ResignAction) const;
781  virtual RTI::ResignAction convertResignAction(MAKRti::DtResignAction) const;
782 #endif
783 
784 protected:
785 
786  DtFedReader * getReader( DtFomType theFomType, DtFomClassMgr* target);
787  DtFedReader * getReader( DtFomType theFomType );
788  void addToParsedFomMap( DtFedReader * myFedReader, const MAKRti::DtString & fileNameToUse, DtFomClassMgr* fedTarget, unsigned long theCrc = 0);
790 #ifdef DtIFSPEC1516
791  rti1516::RTIambassador* myRtiAmb;
792 #elif defined(DtIFSPEC1516E)
793  rti1516e::RTIambassador* myRtiAmb;
794 #else
796 #endif
797 
800 
803 
804 
807 
810 
813 
816 
818  DtMomMgr* myMomMgr;
819 
820 #ifdef DDM
821 
822  DtDataDistMgr* myDdmMgr;
823 #endif
824 #ifdef DtTIME
825 
826  DtTimeMgr* myTimeMgr;
827 #endif
828 
829 
831  MAKRti::DtTime myResponseInterval;
832 
834  MAKRti::DtString myFedExName;
835 
837  unsigned long myFedExHandle;
838 
840  MAKRti::DtString myFedType;
841 
844  MAKRti::DtString myFedName;
845 
848 
850  MAKRti::DtString myCurrentFedFileName;
851 
853  MAKRti::DtString myMimName;
854 
856  MAKRti::DtString myCurrentTimeImplName;
857 
858 #ifdef DtIFSPEC1516E
859 
860  std::vector<std::wstring> myFomModulesNames;
861  std::vector<std::wstring> myJoinFomModulesNames;
862  std::vector<char*> myFomModuleData;
863  int myMimIndex;
864 #endif
865 
867  MAKRti::DtTime myLastHeartbeat;
868 
872 #if defined(DtIFSPEC1516) || defined(DtIFSPEC1516E)
873 #else
875 #endif
876 
879 
882 
883 
886 
888  DtFedReader * myFedReader;
889  DtFedReader * myFedReader13;
890  DtFedReader * myFedReader1516;
891  DtFedReader * myFedReader1516e;
892 
896  MAKRti::DtList myMappingList;
897 
898  std::map<MAKRti::DtString, std::set<MAKRti::DtString> > myFedFileNames;
899 
901  std::map<MAKRti::DtString, DtFomClassMgr*> myParsedFoms;
902 
904  DtBoost::shared_ptr<DtRtiAssistantLrcClient> myAssistantClient;
905 
908 
909 
921  MAKRti::DtString mySaveLabel;
923  MAKRti::DtString myLastSaveLabel;
925  MAKRti::DtString myRestoreLabel;
927  MAKRti::DtString myLastRestoreLabel;
929 
932 
935 
937  MAKRti::DtClock myClock;
938 
940  unsigned long myTickCount;
941 
944 
947 
948  unsigned long myFlags;
949 
952 
955 
958 
960 
961 #ifdef DtIFSPEC1516E
962  // our list of Federate Names to Handles and vise-versa
963  std::map< MAKRti::DtString, DtFederateHandle > myFederateNameToHandle;
964  std::map< DtFederateHandle, MAKRti::DtString > myFederateHandleToName;
965 #endif
966 
968  MAKRti::DtResignAction myResignAction;
969 
970 protected:
972  static DtFederateMgrCreator theCreator;
973 
975  static DtFederateMgrCreator theInternalCreator;
976 };
977 
978 #endif
979 
980 
981 

Document ID: Generated on Fri Mar 14 19:08:55 EDT 2014 from SVN revision 137085
Copyright © 2005-2014 VT MÄK Inc. All Rights Reserved (www.mak.com)