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();
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 bool saveInitiated()
const;
414 virtual bool saveBegun()
const;
417 virtual bool restoreRequested()
const;
420 virtual bool restoreInitiated()
const;
423 virtual bool restoreBegun()
const;
426 virtual const MAKRti::DtString& restoreLabel()
const;
429 virtual const MAKRti::DtString& lastRestoreLabel()
const;
432 const MAKRti::DtString& currentFedFileName()
const;
433 void setCurrentFedFileName(
const MAKRti::DtString& );
436 const MAKRti::DtString& mimName()
const;
437 void setMimName(
const MAKRti::DtString& );
441 void addFomModule(
const MAKRti::DtString& name,
char* buffer );
444 const std::vector<std::wstring>& fomModuleNames()
const;
447 void addJoinFomModuleNames(
const std::vector<MAKRti::DtString>& moduleNames);
448 const std::vector<std::wstring>& joinFomModuleNames()
const;
452 const char* fomModuleData(MAKRti::DtU32 moduleIndicator)
const;
456 const char* joinFomModuleData(MAKRti::DtU32 moduleIndicator)
const;
459 const char* mimData()
const;
463 const MAKRti::DtString& currentTimeImplName()
const;
464 void setCurrentTimeImplName(
const MAKRti::DtString& );
467 virtual const MAKRti::DtString& saveLabel()
const;
468 virtual void setSaveLabel(
const MAKRti::DtString& value);
471 virtual const MAKRti::DtString& lastSaveLabel()
const;
472 virtual void setLastSaveLabel(
const MAKRti::DtString& value);
476 virtual void testSaveProgress() = 0;
480 virtual void initiateSave();
486 #elif defined(DtIFSPEC1516E)
489 virtual void initiateTimedSave(
RTI::FedTime const& saveTime);
503 virtual MAKRti::DtString& getSaveFileName(
const char* label,
505 bool extendName=
true);
512 virtual MAKRti::DtString& getRestoreFileName(
const char* label,
516 virtual unsigned long tickCount()
const;
519 virtual bool isTicking()
const;
527 unsigned long flags()
const;
529 DtResignAction automaticResignDirective()
const;
539 virtual const MAKRti::DtString& getFederateNameFromHandle(
DtFederateHandle handle );
540 virtual DtFederateHandle getFederateHandleFromName(
const MAKRti::DtString& name );
555 DtBoost::shared_ptr<DtRtiAssistantLrcClient> assistantClient);
559 static void setCreatorFunction(DtFederateMgrCreator fn);
565 static void setInternalCreatorFunction(DtFederateMgrCreator fn);
575 virtual void processResign(
const DtResignMsg& msg);
625 virtual void sendAlive();
628 virtual void sendResignMsg(
const char* fedExName,
632 void sendTickedMsg();
635 virtual void applyRidParameters();
641 virtual MAKRti::DtFilename fedFileNameToUse(MAKRti::DtString fileName, MAKRti::DtString executionName );
644 virtual void testReadFedFile(MAKRti::DtString fileName, MAKRti::DtString executionName);
648 virtual void readFedFile(MAKRti::DtString fileName, MAKRti::DtString executionName);
652 virtual void readFedFilePtr(
const FILE* fp,
653 const MAKRti::DtString& fileName,
654 const MAKRti::DtString& executionName );
658 virtual void addFedExNameMapping(
const MAKRti::DtString& execName,
659 const MAKRti::DtString& timeImplName,
const MAKRti::DtString& fed);
661 virtual void addFomModuleNameMapping(
const MAKRti::DtString executionName,
662 const std::vector<MAKRti::DtString>& modules);
664 virtual void addFomModuleNameMapping(
const MAKRti::DtString executionName,
665 const MAKRti::DtString& modules );
670 #elif defined(DtIFSPEC1516E)
678 virtual void postJoinInit(
679 const char* federateType,
680 const char* executionName,
681 const char* federateName
684 #elif defined(DtIFSPEC1516E)
698 static void processResign(
const DtResignMsg& msg,
void* usr);
716 static void processRestore(
const DtRestoreMsg& msg,
void* usr);
754 virtual void createObjectMgr();
757 virtual void createInteractionMgr();
760 virtual void createDdmMgr();
763 virtual void createTimeMgr();
766 virtual void createMomMgr();
769 virtual void createTestMgr();
776 #elif defined(DtIFSPEC1516E)
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);
792 #elif defined(DtIFSPEC1516E)
822 DtDataDistMgr* myDdmMgr;
826 DtTimeMgr* myTimeMgr;
860 std::vector<std::wstring> myFomModulesNames;
861 std::vector<std::wstring> myJoinFomModulesNames;
862 std::vector<char*> myFomModuleData;
872 #if defined(DtIFSPEC1516) || defined(DtIFSPEC1516E)
963 std::map< MAKRti::DtString, DtFederateHandle > myFederateNameToHandle;
964 std::map< DtFederateHandle, MAKRti::DtString > myFederateHandleToName;