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,
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;
157 const char* yourName,
158 const char* executionName,
159 RTI::FederateAmbassador* federateAmbassadorReference,
160 unsigned long flags) = 0;
167 #elif defined(DtIFSPEC1516E)
177 virtual bool automaticReserveObjectName(
const char *);
183 rti1516::VariableLengthData
const & theTag) = 0;
184 #elif defined(DtIFSPEC1516E)
187 rti1516e::VariableLengthData
const & theTag) = 0;
191 const char* theTag) = 0;
195 virtual void waitForResignResponse(
bool serviceCall =
true);
198 virtual void waitForReserveNameResponse(
bool serviceCall =
true);
204 rti1516::VariableLengthData
const & theTag,
206 #elif defined(DtIFSPEC1516E)
209 rti1516e::VariableLengthData
const & theTag,
224 virtual MAKRti::DtString fedFileName(MAKRti::DtString execName);
229 virtual MAKRti::DtString timeImplName(MAKRti::DtString execName);
238 #elif defined(DtIFSPEC1516E)
248 virtual void pretick();
249 virtual void posttick();
251 virtual void postTickCallbacks();
254 virtual void removePostTickCallback(
const MAKRti::DtString& label);
259 const rti1516::LogicalTime* time=
NULL) =0;
262 virtual void queryFederationSaveStatus()=0;
265 virtual void queryFederationRestoreStatus()=0;
266 #elif defined(DtIFSPEC1516E)
269 const rti1516e::LogicalTime* time=
NULL) =0;
272 virtual void queryFederationSaveStatus()=0;
275 virtual void queryFederationRestoreStatus()=0;
278 virtual void abortFederationSave () =0;
281 virtual void abortFederationRestore () =0;
285 const RTI::FedTime* time=
NULL) =0;
310 virtual char* getOrderName(MAKRti::DtOrderType order);
316 virtual MAKRti::DtOrderType getOrderHandle(MAKRti::DtString order);
322 virtual MAKRti::DtString
const & fedType()
const;
325 virtual MAKRti::DtString
const & fedName()
const;
328 virtual MAKRti::DtString
const & fedExName()
const;
331 virtual unsigned long fedExHandle()
const;
334 virtual bool isJoined()
const;
341 #elif defined(DtIFSPEC1516E)
353 virtual rti1516::FederateAmbassador * federateAmbassador()
const;
354 #elif defined(DtIFSPEC1516E)
357 virtual RTI::FederateAmbassador * federateAmbassador()
const;
387 virtual DtTimeMgr* timeMgr();
388 virtual DtTimeMgr* timeMgr()
const;
397 virtual DtMomMgr* momMgr();
398 virtual DtMomMgr* momMgr()
const;
403 virtual DtDataDistMgr* ddmMgr();
404 virtual DtDataDistMgr* ddmMgr()
const;
415 virtual bool forcedToResign()
const;
418 virtual void setMomResign();
421 virtual void resetMomResign();
424 virtual bool saveInitiated()
const;
427 virtual bool saveBegun()
const;
430 virtual bool restoreRequested()
const;
433 virtual bool restoreInitiated()
const;
436 virtual bool restoreBegun()
const;
439 virtual const MAKRti::DtString& restoreLabel()
const;
442 virtual const MAKRti::DtString& lastRestoreLabel()
const;
445 const MAKRti::DtString& currentFedFileName()
const;
446 void setCurrentFedFileName(
const MAKRti::DtString& );
449 const MAKRti::DtString& mimName()
const;
450 void setMimName(
const MAKRti::DtString& );
454 void addFomModule(
const MAKRti::DtString& name,
char* buffer );
457 const std::vector<std::wstring>& fomModuleNames()
const;
460 void addJoinFomModuleNames(
const std::vector<MAKRti::DtString>& moduleNames);
461 const std::vector<std::wstring>& joinFomModuleNames()
const;
465 const char* fomModuleData(MAKRti::DtU32 moduleIndicator)
const;
469 const char* joinFomModuleData(MAKRti::DtU32 moduleIndicator)
const;
472 const char* mimData()
const;
476 const MAKRti::DtString& currentTimeImplName()
const;
477 void setCurrentTimeImplName(
const MAKRti::DtString& );
480 virtual const MAKRti::DtString& saveLabel()
const;
481 virtual void setSaveLabel(
const MAKRti::DtString& value);
484 virtual const MAKRti::DtString& lastSaveLabel()
const;
485 virtual void setLastSaveLabel(
const MAKRti::DtString& value);
489 virtual void testSaveProgress() = 0;
493 virtual void initiateSave();
498 virtual void initiateTimedSave(rti1516::LogicalTime
const& saveTime);
499 #elif defined(DtIFSPEC1516E)
500 virtual void initiateTimedSave(rti1516e::LogicalTime
const& saveTime);
502 virtual void initiateTimedSave(RTI::FedTime
const& saveTime);
516 virtual MAKRti::DtString& getSaveFileName(
const char* label,
518 bool extendName=
true);
525 virtual MAKRti::DtString& getRestoreFileName(
const char* label,
529 virtual unsigned long tickCount()
const;
532 virtual bool isTicking()
const;
540 unsigned long flags()
const;
542 DtResignAction automaticResignDirective()
const;
553 virtual const MAKRti::DtString& getFederateNameFromHandle(
DtFederateHandle handle );
554 virtual DtFederateHandle getFederateHandleFromName(
const MAKRti::DtString& name );
568 DtBoost::shared_ptr<DtRtiAssistantLrcClient> assistantClient);
572 static void setCreatorFunction(DtFederateMgrCreator fn);
578 static void setInternalCreatorFunction(DtFederateMgrCreator fn);
588 virtual void processResign(
const DtResignMsg& msg);
638 virtual void sendAlive();
641 virtual void sendResignMsg(
const char* fedExName,
645 void sendTickedMsg();
648 virtual void applyRidParameters();
654 virtual MAKRti::DtFilename fedFileNameToUse(MAKRti::DtString fileName, MAKRti::DtString executionName );
657 virtual void testReadFedFile(MAKRti::DtString fileName, MAKRti::DtString executionName);
661 virtual void readFedFile(MAKRti::DtString fileName, MAKRti::DtString executionName);
665 virtual void readFedFilePtr(
const FILE* fp,
666 const MAKRti::DtString& fileName,
667 const MAKRti::DtString& executionName );
671 virtual void addFedExNameMapping(
const MAKRti::DtString& execName,
672 const MAKRti::DtString& timeImplName,
const MAKRti::DtString& fed);
674 virtual void addFomModuleNameMapping(
const MAKRti::DtString executionName,
675 const std::vector<MAKRti::DtString>& modules);
677 virtual void addFomModuleNameMapping(
const MAKRti::DtString executionName,
678 const MAKRti::DtString& modules );
683 #elif defined(DtIFSPEC1516E)
691 virtual void postJoinInit(
692 const char* federateType,
693 const char* executionName,
694 const char* federateName
696 , rti1516::FederateAmbassador* federateAmbassadorReference);
697 #elif defined(DtIFSPEC1516E)
700 , RTI::FederateAmbassador* federateAmbassadorReference);
703 virtual void postJoinConfirmInit();
713 static void processResign(
const DtResignMsg& msg,
void* usr);
731 static void processRestore(
const DtRestoreMsg& msg,
void* usr);
769 virtual void createObjectMgr();
772 virtual void createInteractionMgr();
775 virtual void createDdmMgr();
778 virtual void createTimeMgr();
781 virtual void createMomMgr();
784 virtual void createTestMgr();
791 #elif defined(DtIFSPEC1516E)
808 DtFedReader * getReader( DtFomType theFomType,
DtFomClassMgr* target);
809 DtFedReader * getReader( DtFomType theFomType );
810 void addToParsedFomMap( DtFedReader * myFedReader,
const MAKRti::DtString & fileNameToUse,
DtFomClassMgr* fedTarget,
unsigned long theCrc = 0);
812 MAKRti::DtFilename & getStandardMimPath();
817 #elif defined(DtIFSPEC1516E)
847 DtDataDistMgr* myDdmMgr;
851 DtTimeMgr* myTimeMgr;
885 std::vector<std::wstring> myFomModulesNames;
886 std::vector<std::wstring> myJoinFomModulesNames;
887 std::vector<char*> myFomModuleData;
897 #if defined(DtIFSPEC1516) || defined(DtIFSPEC1516E)