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)
92 DtBoost::shared_ptr<DtRtiAssistantLrcClient> assistantClient);
95 typedef void (*DtFedMgrPostTickCallbackFcn) (
void*);
112 DtBoost::shared_ptr<DtRtiAssistantLrcClient> assistantClient);
130 virtual void createFederationExecution(
131 const char* executionName,
const char* timeImplName,
133 const std::vector<DtString>& fomModules,
134 const char* mimModule) = 0;
136 const char* fed) = 0;
140 virtual void destroyFederationExecution (
141 const char* executionName) = 0;
145 virtual void listFederationExecutions() = 0;
150 virtual rti1516::FederateHandle joinFederationExecution(
151 const char* federateType,
152 const char* federationExecutionName,
154 unsigned long flags) = 0;
155 #elif defined(DtIFSPEC1516E)
156 virtual rti1516e::FederateHandle joinFederationExecution(
157 const char* federateName,
158 const char* federateType,
159 const char* federationExecutionName,
160 const std::vector<DtString>& fomModules,
161 unsigned long flags) = 0;
163 virtual RTI::FederateHandle joinFederationExecution (
164 const char* yourName,
165 const char* executionName,
166 RTI::FederateAmbassador* federateAmbassadorReference,
167 unsigned long flags) = 0;
172 virtual void resignFederationExecution(
174 #elif defined(DtIFSPEC1516E)
175 virtual void resignFederationExecution(
178 virtual void resignFederationExecution(
184 virtual bool automaticReserveObjectName(
const char *);
188 virtual void registerFederationSynchronizationPoint(
191 #elif defined(DtIFSPEC1516E)
192 virtual void registerFederationSynchronizationPoint(
194 rti1516e::VariableLengthData
const & theTag) = 0;
196 virtual void registerFederationSynchronizationPoint(
198 const char* theTag) = 0;
202 virtual void waitForResignResponse(
bool serviceCall =
true);
205 virtual void waitForReserveNameResponse(
bool serviceCall =
true);
209 virtual void registerFederationSynchronizationPoint(
213 #elif defined(DtIFSPEC1516E)
214 virtual void registerFederationSynchronizationPoint(
216 rti1516e::VariableLengthData
const & theTag,
219 virtual void registerFederationSynchronizationPoint(
226 virtual void synchronizationPointAchieved(
const char* label,
bool successfully=
true) = 0;
231 virtual MAKRti::DtString fedFileName(MAKRti::DtString execName);
236 virtual MAKRti::DtString timeImplName(MAKRti::DtString execName);
245 #elif defined(DtIFSPEC1516E)
249 virtual void setTopLevelAmbassador(RTI::RTIambassador* ambPtr);
255 virtual void pretick();
256 virtual void posttick();
258 virtual void postTickCallbacks();
261 virtual void removePostTickCallback(
const MAKRti::DtString& label);
265 virtual void requestFederationSave (
const char *label,
269 virtual void queryFederationSaveStatus()=0;
272 virtual void queryFederationRestoreStatus()=0;
273 #elif defined(DtIFSPEC1516E)
275 virtual void requestFederationSave (
const char *label,
276 const rti1516e::LogicalTime* time=NULL) =0;
279 virtual void queryFederationSaveStatus()=0;
282 virtual void queryFederationRestoreStatus()=0;
285 virtual void abortFederationSave () =0;
288 virtual void abortFederationRestore () =0;
291 virtual void requestFederationSave (
const char *label,
292 const RTI::FedTime* time=NULL) =0;
296 virtual void federateSaveBegun () =0;
299 virtual void federateSaveComplete () =0;
302 virtual void federateSaveNotComplete () =0;
305 virtual void requestFederationRestore (
const char *label) =0;
308 virtual void federateRestoreComplete () =0;
311 virtual void federateRestoreNotComplete () =0;
314 virtual char* getTransportationName(MAKRti::DtTransportType transport);
317 virtual char* getOrderName(MAKRti::DtOrderType order);
320 virtual MAKRti::DtTransportType getTransportationHandle(MAKRti::DtString transport);
323 virtual MAKRti::DtOrderType getOrderHandle(MAKRti::DtString order);
329 virtual MAKRti::DtString
const & fedType()
const;
332 virtual MAKRti::DtString
const & fedName()
const;
335 virtual MAKRti::DtString
const & fedExName()
const;
338 virtual unsigned long fedExHandle()
const;
341 virtual bool isJoined()
const;
348 #elif defined(DtIFSPEC1516E)
352 RTI::RTIambassador* rtiAmb();
353 RTI::RTIambassador* rtiAmb()
const;
361 #elif defined(DtIFSPEC1516E)
364 virtual RTI::FederateAmbassador * federateAmbassador()
const;
394 virtual DtTimeMgr* timeMgr();
395 virtual DtTimeMgr* timeMgr()
const;
404 virtual DtMomMgr* momMgr();
405 virtual DtMomMgr* momMgr()
const;
410 virtual DtDataDistMgr* ddmMgr();
411 virtual DtDataDistMgr* ddmMgr()
const;
422 virtual bool forcedToResign()
const;
425 virtual void setMomResign();
428 virtual void resetMomResign();
431 virtual bool saveInitiated()
const;
434 virtual bool saveBegun()
const;
437 virtual bool restoreRequested()
const;
440 virtual bool restoreInitiated()
const;
443 virtual bool restoreBegun()
const;
446 virtual const MAKRti::DtString& restoreLabel()
const;
449 virtual const MAKRti::DtString& lastRestoreLabel()
const;
452 const MAKRti::DtString& currentFedFileName()
const;
453 void setCurrentFedFileName(
const MAKRti::DtString& );
456 const MAKRti::DtString& mimName()
const;
457 void setMimName(
const MAKRti::DtString& );
461 void addFomModule(
const MAKRti::DtString& name,
char* buffer );
464 const std::vector<std::wstring>& fomModuleNames()
const;
467 void addJoinFomModuleNames(
const std::vector<MAKRti::DtString>& moduleNames);
468 const std::vector<std::wstring>& joinFomModuleNames()
const;
472 const char* fomModuleData(MAKRti::DtU32 moduleIndicator)
const;
476 const char* joinFomModuleData(MAKRti::DtU32 moduleIndicator)
const;
479 const char* mimData()
const;
483 const MAKRti::DtString& currentTimeImplName()
const;
484 void setCurrentTimeImplName(
const MAKRti::DtString& );
487 virtual const MAKRti::DtString& saveLabel()
const;
488 virtual void setSaveLabel(
const MAKRti::DtString& value);
491 virtual const MAKRti::DtString& lastSaveLabel()
const;
492 virtual void setLastSaveLabel(
const MAKRti::DtString& value);
496 virtual void testSaveProgress() = 0;
500 virtual void initiateSave();
506 #elif defined(DtIFSPEC1516E)
507 virtual void initiateTimedSave(rti1516e::LogicalTime
const& saveTime);
509 virtual void initiateTimedSave(RTI::FedTime
const& saveTime);
523 virtual MAKRti::DtString& getSaveFileName(
const char* label,
525 bool extendName=
true);
532 virtual MAKRti::DtString& getRestoreFileName(
const char* label,
536 virtual unsigned long tickCount()
const;
539 virtual bool isTicking()
const;
547 unsigned long flags()
const;
549 DtResignAction automaticResignDirective()
const;
560 virtual const MAKRti::DtString& getFederateNameFromHandle(
DtFederateHandle handle );
561 virtual DtFederateHandle getFederateHandleFromName(
const MAKRti::DtString& name );
575 DtBoost::shared_ptr<DtRtiAssistantLrcClient> assistantClient);
579 static void setCreatorFunction(DtFederateMgrCreator fn);
585 static void setInternalCreatorFunction(DtFederateMgrCreator fn);
595 virtual void processResign(
const DtResignMsg& msg);
645 virtual void sendAlive();
648 virtual void sendResignMsg(
const char* fedExName,
652 void sendTickedMsg();
655 virtual void applyRidParameters();
661 virtual MAKRti::DtFilename fedFileNameToUse(MAKRti::DtString fileName, MAKRti::DtString executionName );
664 virtual int mapFomDepComplexity(DtString fomFileName);
666 virtual void mapFomNameToFileName(std::vector<DtString>* fomFileNames);
668 virtual void sortFomFileNames(std::vector<DtString>* fomFileNames);
671 virtual void testReadFedFile(MAKRti::DtString fileName, MAKRti::DtString executionName);
675 virtual void readFedFile(MAKRti::DtString fileName, MAKRti::DtString executionName);
679 virtual void readFedFilePtr(
const FILE* fp,
680 const MAKRti::DtString& fileName,
681 const MAKRti::DtString& executionName );
685 virtual void addFedExNameMapping(
const MAKRti::DtString& execName,
686 const MAKRti::DtString& timeImplName,
const MAKRti::DtString& fed);
688 virtual void addFomModuleNameMapping(
const MAKRti::DtString executionName,
689 const std::vector<MAKRti::DtString>& modules);
691 virtual void addFomModuleNameMapping(
const MAKRti::DtString executionName,
692 const MAKRti::DtString& modules );
697 #elif defined(DtIFSPEC1516E)
705 virtual void postJoinInit(
706 const char* federateType,
707 const char* executionName,
708 const char* federateName
711 #elif defined(DtIFSPEC1516E)
714 , RTI::FederateAmbassador* federateAmbassadorReference);
717 virtual void postJoinConfirmInit();
727 static void processResign(
const DtResignMsg& msg,
void* usr);
745 static void processRestore(
const DtRestoreMsg& msg,
void* usr);
783 virtual void createObjectMgr();
786 virtual void createInteractionMgr();
789 virtual void createDdmMgr();
792 virtual void createTimeMgr();
795 virtual void createMomMgr();
798 virtual void createTestMgr();
805 #elif defined(DtIFSPEC1516E)
822 DtFedReader * getReader( DtFomType theFomType,
DtFomClassMgr* target);
823 DtFedReader * getReader( DtFomType theFomType );
824 void addToParsedFomMap( DtFedReader * myFedReader,
const MAKRti::DtString & fileNameToUse,
DtFomClassMgr* fedTarget,
unsigned long theCrc = 0);
829 #elif defined(DtIFSPEC1516E)
859 DtDataDistMgr* myDdmMgr;
863 DtTimeMgr* myTimeMgr;
897 std::vector<std::wstring> myFomModulesNames;
898 std::vector<std::wstring> myJoinFomModulesNames;
899 std::vector<char*> myFomModuleData;
909 #if defined(DtIFSPEC1516) || defined(DtIFSPEC1516E)