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>
26 #if defined(DtIFSPEC1516) || defined(DtIFSPEC1516E)
27 #include "RTI/RTIambassador.h"
28 #include "RTI/LogicalTimeFactory.h"
29 #include "RTI/Enums.h"
91 DtBoost::shared_ptr<DtRtiAssistantLrcClient> assistantClient);
94 typedef void (*DtFedMgrPostTickCallbackFcn) (
void*);
105 DtBoost::shared_ptr<DtRtiAssistantLrcClient> assistantClient);
124 const char* executionName,
const char* timeImplName,
126 const std::vector<DtString>& fomModules,
127 const char* mimModule) = 0;
129 const char* fed) = 0;
134 const char* executionName) = 0;
138 virtual void listFederationExecutions() = 0;
144 const char* federateType,
145 const char* federationExecutionName,
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;
157 const char* yourName,
158 const char* executionName,
160 unsigned long flags) = 0;
167 #elif defined(DtIFSPEC1516E)
180 #elif defined(DtIFSPEC1516E)
187 const char* theTag) = 0;
191 virtual void waitForResignResponse(
bool serviceCall =
true);
199 #elif defined(DtIFSPEC1516E)
217 virtual MAKRti::DtString
fedFileName(MAKRti::DtString execName);
222 virtual MAKRti::DtString timeImplName(MAKRti::DtString execName);
231 #elif defined(DtIFSPEC1516E)
241 virtual void pretick();
242 virtual void posttick();
244 virtual void postTickCallbacks();
247 virtual void removePostTickCallback(
const MAKRti::DtString& label);
258 virtual void queryFederationRestoreStatus()=0;
259 #elif defined(DtIFSPEC1516E)
268 virtual void queryFederationRestoreStatus()=0;
271 virtual void abortFederationSave () =0;
274 virtual void abortFederationRestore () =0;
315 virtual MAKRti::DtString
const & fedType()
const;
318 virtual MAKRti::DtString
const & fedName()
const;
321 virtual MAKRti::DtString
const & fedExName()
const;
324 virtual unsigned long fedExHandle()
const;
327 virtual bool isJoined()
const;
334 #elif defined(DtIFSPEC1516E)
347 #elif defined(DtIFSPEC1516E)
380 virtual DtTimeMgr* timeMgr();
381 virtual DtTimeMgr* timeMgr()
const;
390 virtual DtMomMgr* momMgr();
391 virtual DtMomMgr* momMgr()
const;
396 virtual DtDataDistMgr* ddmMgr();
397 virtual DtDataDistMgr* ddmMgr()
const;
408 virtual bool forcedToResign()
const;
411 virtual void setMomResign();
414 virtual void resetMomResign();
417 virtual bool saveInitiated()
const;
420 virtual bool saveBegun()
const;
423 virtual bool restoreRequested()
const;
426 virtual bool restoreInitiated()
const;
429 virtual bool restoreBegun()
const;
432 virtual const MAKRti::DtString& restoreLabel()
const;
435 virtual const MAKRti::DtString& lastRestoreLabel()
const;
438 const MAKRti::DtString& currentFedFileName()
const;
439 void setCurrentFedFileName(
const MAKRti::DtString& );
442 const MAKRti::DtString& mimName()
const;
443 void setMimName(
const MAKRti::DtString& );
447 void addFomModule(
const MAKRti::DtString& name,
char* buffer );
450 const std::vector<std::wstring>& fomModuleNames()
const;
453 void addJoinFomModuleNames(
const std::vector<MAKRti::DtString>& moduleNames);
454 const std::vector<std::wstring>& joinFomModuleNames()
const;
458 const char* fomModuleData(MAKRti::DtU32 moduleIndicator)
const;
462 const char* joinFomModuleData(MAKRti::DtU32 moduleIndicator)
const;
465 const char* mimData()
const;
469 const MAKRti::DtString& currentTimeImplName()
const;
470 void setCurrentTimeImplName(
const MAKRti::DtString& );
473 virtual const MAKRti::DtString& saveLabel()
const;
474 virtual void setSaveLabel(
const MAKRti::DtString& value);
477 virtual const MAKRti::DtString& lastSaveLabel()
const;
478 virtual void setLastSaveLabel(
const MAKRti::DtString& value);
482 virtual void testSaveProgress() = 0;
486 virtual void initiateSave();
492 #elif defined(DtIFSPEC1516E)
495 virtual void initiateTimedSave(
RTI::FedTime const& saveTime);
509 virtual MAKRti::DtString& getSaveFileName(
const char* label,
511 bool extendName=
true);
518 virtual MAKRti::DtString& getRestoreFileName(
const char* label,
522 virtual unsigned long tickCount()
const;
525 virtual bool isTicking()
const;
533 unsigned long flags()
const;
535 DtResignAction automaticResignDirective()
const;
545 virtual const MAKRti::DtString& getFederateNameFromHandle(
DtFederateHandle handle );
546 virtual DtFederateHandle getFederateHandleFromName(
const MAKRti::DtString& name );
561 DtBoost::shared_ptr<DtRtiAssistantLrcClient> assistantClient);
565 static void setCreatorFunction(DtFederateMgrCreator fn);
571 static void setInternalCreatorFunction(DtFederateMgrCreator fn);
581 virtual void processResign(
const DtResignMsg& msg);
631 virtual void sendAlive();
634 virtual void sendResignMsg(
const char* fedExName,
638 void sendTickedMsg();
641 virtual void applyRidParameters();
647 virtual MAKRti::DtFilename fedFileNameToUse(MAKRti::DtString fileName, MAKRti::DtString executionName );
650 virtual void testReadFedFile(MAKRti::DtString fileName, MAKRti::DtString executionName);
654 virtual void readFedFile(MAKRti::DtString fileName, MAKRti::DtString executionName);
658 virtual void readFedFilePtr(
const FILE* fp,
659 const MAKRti::DtString& fileName,
660 const MAKRti::DtString& executionName );
664 virtual void addFedExNameMapping(
const MAKRti::DtString& execName,
665 const MAKRti::DtString& timeImplName,
const MAKRti::DtString& fed);
667 virtual void addFomModuleNameMapping(
const MAKRti::DtString executionName,
668 const std::vector<MAKRti::DtString>& modules);
670 virtual void addFomModuleNameMapping(
const MAKRti::DtString executionName,
671 const MAKRti::DtString& modules );
676 #elif defined(DtIFSPEC1516E)
684 virtual void postJoinInit(
685 const char* federateType,
686 const char* executionName,
687 const char* federateName
690 #elif defined(DtIFSPEC1516E)
696 virtual void postJoinConfirmInit();
706 static void processResign(
const DtResignMsg& msg,
void* usr);
724 static void processRestore(
const DtRestoreMsg& msg,
void* usr);
762 virtual void createObjectMgr();
765 virtual void createInteractionMgr();
768 virtual void createDdmMgr();
771 virtual void createTimeMgr();
774 virtual void createMomMgr();
777 virtual void createTestMgr();
784 #elif defined(DtIFSPEC1516E)
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);
805 MAKRti::DtFilename & getStandardMimPath();
810 #elif defined(DtIFSPEC1516E)
840 DtDataDistMgr* myDdmMgr;
844 DtTimeMgr* myTimeMgr;
878 std::vector<std::wstring> myFomModulesNames;
879 std::vector<std::wstring> myJoinFomModulesNames;
880 std::vector<char*> myFomModuleData;
890 #if defined(DtIFSPEC1516) || defined(DtIFSPEC1516E)
992 std::map< MAKRti::DtString, DtFederateHandle > myFederateNameToHandle;
993 std::map< DtFederateHandle, MAKRti::DtString > myFederateHandleToName;