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)
91 DtBoost::shared_ptr<DtRtiAssistantLrcClient> assistantClient);
94 typedef void (*DtFedMgrPostTickCallbackFcn) (
void*);
105 DtBoost::shared_ptr<DtRtiAssistantLrcClient> assistantClient);
123 virtual void createFederationExecution(
124 const char* executionName,
const char* timeImplName,
126 const std::vector<DtString>& fomModules,
127 const char* mimModule) = 0;
129 const char* fed) = 0;
133 virtual void destroyFederationExecution (
134 const char* executionName) = 0;
138 virtual void listFederationExecutions() = 0;
143 virtual rti1516::FederateHandle joinFederationExecution(
144 const char* federateType,
145 const char* federationExecutionName,
147 unsigned long flags) = 0;
148 #elif defined(DtIFSPEC1516E)
149 virtual rti1516e::FederateHandle joinFederationExecution(
150 const char* federateName,
151 const char* federateType,
152 const char* federationExecutionName,
153 const std::vector<DtString>& fomModules,
154 unsigned long flags) = 0;
156 virtual RTI::FederateHandle joinFederationExecution (
157 const char* yourName,
158 const char* executionName,
159 RTI::FederateAmbassador* federateAmbassadorReference,
160 unsigned long flags) = 0;
165 virtual void resignFederationExecution(
167 #elif defined(DtIFSPEC1516E)
168 virtual void resignFederationExecution(
171 virtual void resignFederationExecution(
177 virtual bool automaticReserveObjectName(
const char *);
181 virtual void registerFederationSynchronizationPoint(
184 #elif defined(DtIFSPEC1516E)
185 virtual void registerFederationSynchronizationPoint(
187 rti1516e::VariableLengthData
const & theTag) = 0;
189 virtual void registerFederationSynchronizationPoint(
191 const char* theTag) = 0;
195 virtual void waitForResignResponse(
bool serviceCall =
true);
198 virtual void waitForReserveNameResponse(
bool serviceCall =
true);
202 virtual void registerFederationSynchronizationPoint(
206 #elif defined(DtIFSPEC1516E)
207 virtual void registerFederationSynchronizationPoint(
209 rti1516e::VariableLengthData
const & theTag,
212 virtual void registerFederationSynchronizationPoint(
219 virtual void synchronizationPointAchieved(
const char* label,
bool successfully=
true) = 0;
224 virtual MAKRti::DtString fedFileName(MAKRti::DtString execName);
229 virtual MAKRti::DtString timeImplName(MAKRti::DtString execName);
238 #elif defined(DtIFSPEC1516E)
242 virtual void setTopLevelAmbassador(RTI::RTIambassador* ambPtr);
248 virtual void pretick();
249 virtual void posttick();
251 virtual void postTickCallbacks();
254 virtual void removePostTickCallback(
const MAKRti::DtString& label);
258 virtual void requestFederationSave (
const char *label,
262 virtual void queryFederationSaveStatus()=0;
265 virtual void queryFederationRestoreStatus()=0;
266 #elif defined(DtIFSPEC1516E)
268 virtual void requestFederationSave (
const char *label,
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;
284 virtual void requestFederationSave (
const char *label,
285 const RTI::FedTime* time=NULL) =0;
289 virtual void federateSaveBegun () =0;
292 virtual void federateSaveComplete () =0;
295 virtual void federateSaveNotComplete () =0;
298 virtual void requestFederationRestore (
const char *label) =0;
301 virtual void federateRestoreComplete () =0;
304 virtual void federateRestoreNotComplete () =0;
307 virtual char* getTransportationName(MAKRti::DtTransportType transport);
310 virtual char* getOrderName(MAKRti::DtOrderType order);
313 virtual MAKRti::DtTransportType getTransportationHandle(MAKRti::DtString transport);
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)
345 RTI::RTIambassador* rtiAmb();
346 RTI::RTIambassador* rtiAmb()
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();
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
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)