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>
25 #include <mtl/fomSorter.h>
27 #if defined(DtIFSPEC1516) || defined(DtIFSPEC1516E)
28 #include "RTI/RTIambassador.h"
29 #include "RTI/LogicalTimeFactory.h"
30 #include "RTI/Enums.h"
92 DtBoost::shared_ptr<DtRtiAssistantLrcClient> assistantClient);
95 typedef void (*DtFedMgrPostTickCallbackFcn) (
void*);
111 DtBoost::shared_ptr<DtRtiAssistantLrcClient> assistantClient);
130 const char* executionName,
const char* timeImplName,
132 const std::vector<DtString>& fomModules,
133 const char* mimModule) = 0;
135 const char* fed) = 0;
140 const char* executionName) = 0;
144 virtual void listFederationExecutions() = 0;
150 const char* federateType,
151 const char* federationExecutionName,
152 rti1516::FederateAmbassador* federateAmbassador,
153 unsigned long flags) = 0;
154 #elif defined(DtIFSPEC1516E)
156 const char* federateName,
157 const char* federateType,
158 const char* federationExecutionName,
159 const std::vector<DtString>& fomModules,
160 unsigned long flags) = 0;
163 const char* yourName,
164 const char* executionName,
165 RTI::FederateAmbassador* federateAmbassadorReference,
166 unsigned long flags) = 0;
173 #elif defined(DtIFSPEC1516E)
183 virtual bool automaticReserveObjectName(
const char *);
189 rti1516::VariableLengthData
const & theTag) = 0;
190 #elif defined(DtIFSPEC1516E)
193 rti1516e::VariableLengthData
const & theTag) = 0;
197 const char* theTag) = 0;
201 virtual void waitForResignResponse(
bool serviceCall =
true);
204 virtual void waitForReserveNameResponse(
bool serviceCall =
true);
210 rti1516::VariableLengthData
const & theTag,
212 #elif defined(DtIFSPEC1516E)
215 rti1516e::VariableLengthData
const & theTag,
230 virtual MAKRti::DtString fedFileName(MAKRti::DtString execName);
235 virtual MAKRti::DtString timeImplName(MAKRti::DtString execName);
244 #elif defined(DtIFSPEC1516E)
254 virtual void pretick();
255 virtual void posttick();
257 virtual void postTickCallbacks();
260 virtual void removePostTickCallback(
const MAKRti::DtString& label);
265 const rti1516::LogicalTime* time=
NULL) =0;
268 virtual void queryFederationSaveStatus()=0;
271 virtual void queryFederationRestoreStatus()=0;
272 #elif defined(DtIFSPEC1516E)
275 const rti1516e::LogicalTime* time=
NULL) =0;
278 virtual void queryFederationSaveStatus()=0;
281 virtual void queryFederationRestoreStatus()=0;
284 virtual void abortFederationSave () =0;
287 virtual void abortFederationRestore () =0;
291 const RTI::FedTime* time=
NULL) =0;
316 virtual char* getOrderName(MAKRti::DtOrderType order);
322 virtual MAKRti::DtOrderType getOrderHandle(MAKRti::DtString order);
328 virtual MAKRti::DtString
const & fedType()
const;
331 virtual MAKRti::DtString
const & fedName()
const;
334 virtual MAKRti::DtString
const & fedExName()
const;
337 virtual unsigned long fedExHandle()
const;
340 virtual bool isJoined()
const;
347 #elif defined(DtIFSPEC1516E)
359 virtual rti1516::FederateAmbassador * federateAmbassador()
const;
360 #elif defined(DtIFSPEC1516E)
363 virtual RTI::FederateAmbassador * federateAmbassador()
const;
393 virtual DtTimeMgr* timeMgr();
394 virtual DtTimeMgr* timeMgr()
const;
403 virtual DtMomMgr* momMgr();
404 virtual DtMomMgr* momMgr()
const;
409 virtual DtDataDistMgr* ddmMgr();
410 virtual DtDataDistMgr* ddmMgr()
const;
421 virtual bool forcedToResign()
const;
424 virtual void setMomResign();
427 virtual void resetMomResign();
430 virtual bool saveInitiated()
const;
433 virtual bool saveBegun()
const;
436 virtual bool restoreRequested()
const;
439 virtual bool restoreInitiated()
const;
442 virtual bool restoreBegun()
const;
445 virtual const MAKRti::DtString& restoreLabel()
const;
448 virtual const MAKRti::DtString& lastRestoreLabel()
const;
451 const MAKRti::DtString& currentFedFileName()
const;
452 void setCurrentFedFileName(
const MAKRti::DtString& );
455 const MAKRti::DtString& mimName()
const;
456 void setMimName(
const MAKRti::DtString& );
460 void addFomModule(
const MAKRti::DtString& name,
char* buffer );
463 const std::vector<std::wstring>& fomModuleNames()
const;
466 void addJoinFomModuleNames(
const std::vector<MAKRti::DtString>& moduleNames);
467 const std::vector<std::wstring>& joinFomModuleNames()
const;
471 const char* fomModuleData(MAKRti::DtU32 moduleIndicator)
const;
475 const char* joinFomModuleData(MAKRti::DtU32 moduleIndicator)
const;
478 const char* mimData()
const;
482 const MAKRti::DtString& currentTimeImplName()
const;
483 void setCurrentTimeImplName(
const MAKRti::DtString& );
486 virtual const MAKRti::DtString& saveLabel()
const;
487 virtual void setSaveLabel(
const MAKRti::DtString& value);
490 virtual const MAKRti::DtString& lastSaveLabel()
const;
491 virtual void setLastSaveLabel(
const MAKRti::DtString& value);
495 virtual void testSaveProgress() = 0;
499 virtual void initiateSave();
504 virtual void initiateTimedSave(rti1516::LogicalTime
const& saveTime);
505 #elif defined(DtIFSPEC1516E)
506 virtual void initiateTimedSave(rti1516e::LogicalTime
const& saveTime);
508 virtual void initiateTimedSave(RTI::FedTime
const& saveTime);
522 virtual MAKRti::DtString& getSaveFileName(
const char* label,
524 bool extendName=
true);
531 virtual MAKRti::DtString& getRestoreFileName(
const char* label,
535 virtual unsigned long tickCount()
const;
538 virtual bool isTicking()
const;
546 unsigned long flags()
const;
548 DtResignAction automaticResignDirective()
const;
559 virtual const MAKRti::DtString& getFederateNameFromHandle(
DtFederateHandle handle );
560 virtual DtFederateHandle getFederateHandleFromName(
const MAKRti::DtString& name );
574 DtBoost::shared_ptr<DtRtiAssistantLrcClient> assistantClient);
578 static void setCreatorFunction(DtFederateMgrCreator fn);
584 static void setInternalCreatorFunction(DtFederateMgrCreator fn);
594 virtual void processResign(
const DtResignMsg& msg);
644 virtual void sendAlive();
647 virtual void sendResignMsg(
const char* fedExName,
651 void sendTickedMsg();
654 virtual void applyRidParameters();
660 virtual MAKRti::DtFilename fedFileNameToUse(MAKRti::DtString fileName, MAKRti::DtString executionName );
663 virtual int mapFomDepComplexity(DtString fomFileName);
665 virtual void mapFomNameToFileName(std::vector<DtString>* fomFileNames);
667 virtual void sortFomFileNames(std::vector<DtString>* fomFileNames);
670 virtual void testReadFedFile(MAKRti::DtString fileName, MAKRti::DtString executionName);
674 virtual void readFedFile(MAKRti::DtString fileName, MAKRti::DtString executionName);
678 virtual void readFedFilePtr(
const FILE* fp,
679 const MAKRti::DtString& fileName,
680 const MAKRti::DtString& executionName );
684 virtual void addFedExNameMapping(
const MAKRti::DtString& execName,
685 const MAKRti::DtString& timeImplName,
const MAKRti::DtString& fed);
687 virtual void addFomModuleNameMapping(
const MAKRti::DtString executionName,
688 const std::vector<MAKRti::DtString>& modules);
690 virtual void addFomModuleNameMapping(
const MAKRti::DtString executionName,
691 const MAKRti::DtString& modules );
696 #elif defined(DtIFSPEC1516E)
704 virtual void postJoinInit(
705 const char* federateType,
706 const char* executionName,
707 const char* federateName
709 , rti1516::FederateAmbassador* federateAmbassadorReference);
710 #elif defined(DtIFSPEC1516E)
713 , RTI::FederateAmbassador* federateAmbassadorReference);
716 virtual void postJoinConfirmInit();
726 static void processResign(
const DtResignMsg& msg,
void* usr);
744 static void processRestore(
const DtRestoreMsg& msg,
void* usr);
782 virtual void createObjectMgr();
785 virtual void createInteractionMgr();
788 virtual void createDdmMgr();
791 virtual void createTimeMgr();
794 virtual void createMomMgr();
797 virtual void createTestMgr();
804 #elif defined(DtIFSPEC1516E)
821 DtFedReader * getReader( DtFomType theFomType,
DtFomClassMgr* target);
822 DtFedReader * getReader( DtFomType theFomType );
823 void addToParsedFomMap( DtFedReader * myFedReader,
const MAKRti::DtString & fileNameToUse,
DtFomClassMgr* fedTarget,
unsigned long theCrc = 0);
828 #elif defined(DtIFSPEC1516E)
858 DtDataDistMgr* myDdmMgr;
862 DtTimeMgr* myTimeMgr;
896 std::vector<std::wstring> myFomModulesNames;
897 std::vector<std::wstring> myJoinFomModulesNames;
898 std::vector<char*> myFomModuleData;
908 #if defined(DtIFSPEC1516) || defined(DtIFSPEC1516E)