37 #include <vlutil/vlString.h>
38 #include <vlutil/vlUtil.h>
39 #include <vlutil/vlFedTarget.h>
41 #include <mtl/fedReader13.h>
42 #include <mtl/fedReader1516.h>
43 #include <mtl/fedReader1516e.h>
44 #include <mtl/fedReader1516_4.h>
56 class DtConstrainedSyncMsg;
58 class DtEnableRegulationMsg;
59 class DtEnableConstrainedMsg;
62 class DtNextEventRequestMsg;
73 class DtSaveRequestTsoMsg;
79 class DtTimeAdvanceRequestMsg;
92 std::string
const & timeImplName, MAKRti::DtFomType fedType,
const DtString& momModuleName,
123 DtFedExec(
DtRtiExec* rtiexec,
const std::vector<unsigned int> & crcs, DtString
const & fedExName,
124 std::string
const & timeImplName, MAKRti::DtFomType fedType,
const DtString& momModuleName,
125 const std::vector<DtString >& modules,
int fedExHandle,
DtRIDParameters* params,
unsigned int momModuleCrc);
139 virtual const DtString& fedExName()
const;
142 virtual int fedExHandle()
const;
146 virtual const DtString& fedFileName()
const;
149 virtual const std::vector<DtString>& fomModules()
const;
152 virtual bool fullyCreated()
const;
155 virtual void setFullyCreated(
bool val);
158 virtual unsigned long creatorID()
const;
161 virtual void createDistributor(
const unsigned long initiatingFedID,
162 const DtString& momModuleName,
163 const std::vector<DtString>& fomModules );
166 virtual int numFederates()
const;
178 virtual DtFederateHandle federateHandleOfConnection(
unsigned long connId)
const;
181 virtual void disconnectFederate(
DtFederate* fed );
184 virtual bool removeFederateConnection(
unsigned long id);
191 unsigned long newConnId,
unsigned long& oldConnId);
194 virtual void reconnectFederateSucceeded(
DtFederate* fed );
197 virtual void reconnectFederateFailed(
DtFederate* fed );
209 virtual void resetClockForHeartBeat();
215 virtual void printFederates();
218 virtual void addFederateJoinedCallback(
DtFederateCbFn fn,
void* usr);
221 virtual void removeFederateJoinedCallback(
DtFederateCbFn fn,
void* usr);
224 virtual void addFederateResignedCallback(
DtFederateCbFn fn,
void* usr);
227 virtual void removeFederateResignedCallback(
DtFederateCbFn fn,
void* usr);
231 virtual void addSyncPtRegisteredCallback(
DtSyncPointCbFn fn,
void* usr);
235 virtual void removeSyncPtRegisteredCallback(
DtSyncPointCbFn fn,
void* usr);
247 virtual void addFederationSynchronizedCallback(
DtSyncPointCbFn fn,
void* usr);
251 virtual void removeFederationSynchronizedCallback(
DtSyncPointCbFn fn,
void* usr);
254 virtual void addFederateDisconnectedCallback(
DtFederateCbFn fn,
void* usr );
257 virtual void removeFederateDisconnectedCallback(
DtFederateCbFn fn,
void* usr );
260 virtual void addFederateReconnectSucceededCallback(
DtFederateCbFn fn,
void* usr );
263 virtual void removeFederateReconnectSucceededCallback(
DtFederateCbFn fn,
void* usr );
266 virtual void addFederateReconnectFailedCallback(
DtFederateCbFn fn,
void* usr );
269 virtual void removeFederateReconnectFailedCallback(
DtFederateCbFn fn,
void* usr );
278 void pushFomModuleToJoinedFederates(
DtFederate* newFederate,
280 unsigned int fileSize,
281 const char* fileBuffer );
286 unsigned int fileSize,
287 const char* fileBuffer );
305 virtual const DtTimeInfoList* regulatingFederates()
const;
309 virtual const DtTimeInfoList* constrainedFederates()
const;
313 virtual void disableNetworkTesting();
316 virtual void enableNetworkTesting();
320 bool continuous,
bool haltContinuous,
bool observing,
321 unsigned int interactionPeriod,
unsigned int numInteractions,
322 unsigned int payloadBytes );
325 virtual bool transferRidParams(
DtFederateHandle handle,
const DtString& ridString);
332 static void processJoinMsg(
const DtJoinMsg& msg,
void* usr);
334 static void processAlive(
const DtAliveMsg& msg,
void* usr);
335 static void processResign(
const DtResignMsg& msg,
void* usr);
337 static void processSyncPoint(
const DtSyncPointMsg& msg,
void* usr);
342 static void processSaveBegun(
const DtSaveBegunMsg& msg,
void* usr);
343 static void processAbortSave(
const DtAbortSaveMsg& msg,
void* usr);
348 static void processOwnership(
const DtOwnershipMsg& msg,
void* usr);
356 static void processSaveRequestTso(
const DtSaveRequestTsoMsg& msg,
void* usr);
357 static void processEnableRegulation(
const DtEnableRegulationMsg& msg,
void* usr);
358 static void processEnableConstrained(
const DtEnableConstrainedMsg& msg,
void* usr);
359 static void processTimeAdvanceRequest(
const DtTimeAdvanceRequestMsg& msg,
void* usr);
360 static void processDisable(
const DtDisableMsg& msg,
void* usr);
361 static void processConstrainedSync(
const DtConstrainedSyncMsg& msg,
void* usr);
362 static void processNextEventRequest(
const DtNextEventRequestMsg& msg,
void* usr);
376 static DtFedExec* create(
DtRtiExec* rtiexec,
const std::vector<unsigned int> & crcs, DtString
const & fedExName,
377 std::string
const & timeImplName, MAKRti::DtFomType fedType, DtString
const& momModuleName,
378 const std::vector<DtString>& fomModules,
int fedExHandle,
DtRIDParameters* params,
unsigned int momModuleCrc);
390 virtual const std::map< unsigned long, std::vector<DtString>*>& joinFomModules()
const;
392 virtual std::vector<DtString>& joinFomModulesForConnection(
unsigned long connID)
const;
395 virtual const std::vector<DtString>& createFomModules()
const;
400 virtual void processJoinMsg(
const DtJoinMsg& msg);
401 virtual bool handleJoinFailureCases(
const DtJoinMsg &msg );
402 virtual void requestFedFileUpload(
const DtJoinMsg& msg );
405 virtual void processAlive(
const DtAliveMsg& msg);
406 virtual void processResign(
const DtResignMsg& msg);
427 virtual void processEnableRegulation(
const DtEnableRegulationMsg& msg);
428 virtual void processEnableConstrained(
const DtEnableConstrainedMsg& msg);
429 virtual void processTimeAdvanceRequest(
const DtTimeAdvanceRequestMsg& msg);
430 virtual void processDisable(
const DtDisableMsg& msg);
431 virtual void processConstrainedSync(
const DtConstrainedSyncMsg& msg);
432 virtual void processSaveRequestTso(
const DtSaveRequestTsoMsg& msg);
434 virtual void processNextEventRequest(
const DtNextEventRequestMsg& msg);
449 virtual void processSyncPtAchievedCallbacks(
DtSyncPt* point,
453 virtual void processFederationSynchronizedCallbacks(
DtSyncPt* point);
458 virtual bool synchronized(
DtSyncPt* point,
469 const char* federateType,
const char* federateName,
DtFederateHandle handle,
470 unsigned long connHandle,
int astntCompId,
const char* fedHostName,
476 const char* federateType,
const char* federateName,
478 const char* fedHostname, MAKRti::DtInetAddr host,
491 virtual DtFedReadStatus readCreateFom(
DtFomClassMgr* target,
const DtString& fomFile,
497 virtual DtFedReadStatus readCreateFoms(
DtFomClassMgr* topLevelTarget, std::vector<DtString>& fomFiles,
501 virtual DtFedReadStatus readJoinFom(
DtFomClassMgr* target,
const DtString& fomFile,
506 virtual DtFedReadStatus readJoinFoms(std::vector<DtString>& fomFiles,
510 virtual bool processCreateReady();
514 virtual bool processJoin(
unsigned long connID,
const DtFedJoinInfo* fedInfo);
518 virtual void processJoinReady();
521 virtual void destroyDistributor();
531 virtual unsigned int numberFederatesAllowed(
unsigned int numPartners)
const;
534 virtual void resetControl();
537 virtual bool tickDistributor();
540 virtual bool processEvents();
543 virtual bool areJoinFomModulesUploadedAndReady(
unsigned long federateId);
546 virtual DtCreateResponseFlag handleCreateResponse(DtFedReadStatus status,
const DtFedReader* fedReader,
547 const DtString filename, DtString& errorResponse)
const;
551 const DtString filename, DtString& errorResponse)
const;
556 DtFedReader * getReader(DtFomType theFomType);
557 DtFedReader * getReader( DtFomType theFomType,
DtFomClassMgr* target);
559 void populateWithUnknownFoms(std::vector<DtString> & mods, std::vector<DtString> & requestedMods);
560 bool isFomAvailable(
const DtString & fomName);
561 bool doesCrcMatchKnownFomModuleCrc(
const DtString & fomName,
unsigned int myTakenFomCrc );
564 virtual bool fedFileReady(
const MAKRti::DtString& fileName)
const;
567 virtual bool fedFilesReady(
const std::vector<MAKRti::DtString>& fileNames )
const;
570 virtual bool addJoinFomModuleForConnection(
unsigned long connId,
571 const std::vector<MAKRti::DtString>& modulesFromJoinRequest );
574 virtual void removeJoinFomModuleForConnection(
unsigned long connID );
580 virtual void handleBadJoin(
unsigned long connID,
const DtFedJoinInfo* joinInfo, std::vector<DtString>& joinModules,
584 virtual void readAndMergeJoiningFomModules(
unsigned long connID,
DtFomClassMgr* target,
590 virtual void tickSaveRestore();
594 virtual void tickJoin();
598 virtual void tickFederates();
603 virtual void sendSyncPointMsg(
607 RTI_API::VariableLengthData
const* theTag = NULL,
611 virtual void sendResignMsg(
614 const DtTimeInfo* timeInfo );
615 virtual void sendEnableDisableNetworkTestingMsg(
616 const char* name,
bool enabled );
617 virtual void sendTransferRidParamsMsg(
619 virtual void sendJoinResponseMsg(
unsigned long destinationIDValue,
620 unsigned short requestID,
unsigned int crcOfFedFile,
DtFederateHandle handle,
621 const char* federateName,
int fedExHandle,
const char* fedExName,
622 const DtString& momModule,
const std::vector<MAKRti::DtString>& modules,
623 unsigned long flags,
bool allowNetworkTesting,
bool enableNetworkTesting,
626 const DtString& errorString = DtString::nullString());
628 virtual void sendSaveInitiateMsg(
const char* labelVal);
629 virtual void sendSaveInitiateConstrainedMsg(
const char* labelVal);
631 unsigned long requestID,
const char* labelVal,
635 char const* objectName,
bool result);
637 std::set< std::wstring >
const & objectNames,
647 virtual void sendRegulationEnabledMsg(
650 virtual void sendConstrainedEnabledMsg(
657 virtual void sendNerLbtsMsg(
659 bool nerPending,
bool lagNerPending,
662 virtual void sendSyncConstrainedMsg();
666 virtual void sendSaveTimeMsg(
char const* label,
671 virtual void retireSyncPoint(
const char* name);
680 virtual void checkTimedSave();
683 virtual void initiateSave(
const char* label);
687 virtual bool save(
const char* label );
691 virtual int initializeRestore(
const char* label );
695 virtual bool restore(
const char* label );
705 virtual DtString& getSaveFileName(
const char* label, MAKRti::DtString& fileName,
706 bool extendName=
true);
710 virtual DtString& getRestoreFileName(
const char* label, MAKRti::DtString& fileName);
720 void removeRegulatingEntry(DtTimeInfo* entry);
723 virtual void checkPendingConstrained(
DtRtiApiTime const & lbts);
726 virtual void checkPendingConstrained(DtTimeInfo* entry,
731 virtual bool becomeConstrained(DtTimeInfo* entry);
735 void adjustRegulatingEntry(DtTimeInfo* entry,
738 bool isTimeAvailable);
763 virtual void destroyTempTimePool();
777 virtual bool minTimeAvailable()
const;
781 virtual bool lagTimeAvailable()
const;
796 virtual bool minNerPending()
const;
799 virtual bool lagNerPending()
const;
814 virtual void setFederateHandleSlotInUse(
DtFederateHandle handle,
bool isInUse);
819 virtual bool authorizeFederateOperation(
const DtJoinMsg& msg, DtString& errorMessage);
824 virtual int getNextFreeFedHandle();
914 typedef std::map< DtFederateHandle, DtFedExReservedNameSet >
921 DtTimeInfoList myRegulatingFederates;
922 DtTimeInfoList myConstrainedFederates;
923 DtTimeInfoList myPendingConstrained;
924 DtTimeInfoList myPendingTar;
925 DtTimeInfoList myPendingRegulation;
926 DtTimeInfoList myNerLbtsList;
927 DtTimeInfoList myNerRequested;
928 DtTimeInfoList myPendingNerResponses;
929 bool myNewNerRequestPending;
930 bool myForceNerCycle;
932 bool myTransmitLaggardLBTS;
933 DtList mySyncConstrained;
934 unsigned long myNerCycle;
937 DtList myTempTimePool;
std::vector< FederateHandleSaveStatusPair > FederateHandleSaveStatusPairVector
Definition: Typedefs.h:57
Definition: distributorThreadEvents.h:221
int myDefaultWait
Definition: fedex.h:902
DtList myReconnectFailedCallbacks
Definition: fedex.h:908
unsigned int myNumberFederatesAllowed
Definition: fedex.h:959
Definition: syncPointQueryMsg.h:31
std::vector< unsigned int > myCreationFedFilesCRCs
Definition: fedex.h:848
DtFedReader13 * myFedReader13
Definition: fedex.h:965
std::set< unsigned long > myConnectionsJoinProcessed
Definition: fedex.h:869
DtFedExec *(* DtFedExecCreator)(DtRtiExec *rtiexec, const std::vector< unsigned int > &crcs, DtString const &fedExName, std::string const &timeImplName, MAKRti::DtFomType fedType, const DtString &momModuleName, const std::vector< DtString > &fedFileName, int fedExHandle, DtRIDParameters *params, unsigned int momModuleCrc)
DtFedExec creator prototype.
Definition: fedex.h:91
MAKRti::DtFomType myFedType
Definition: fedex.h:849
Definition: aliveMsg.h:24
unsigned int myMomModuleCrc
Definition: fedex.h:847
DtSaveFinishedResult
Definition: savFinMsg.h:21
std::set< std::string > DtFedExReservedNameSet
Definition: fedex.h:913
unsigned int myCrcOfFedFile
Definition: fedex.h:836
Definition: joinConfMsg.h:24
DtFederateHandleInfoMap myRestoreFederatesByOld
Definition: fedex.h:882
bool myAwaitingCreateUpload
Definition: fedex.h:896
unsigned long myCreatorConnId
Definition: fedex.h:897
bool myAllowNetworkTesting
Whether network testing is enabled or completely disabled by the RID.
Definition: fedex.h:952
This class manages the RTI's start-up configuration using both MTL variables and functions.
Definition: RIDparams.h:87
Definition: fedTimeFactory.h:73
DtString myMomModule
Definition: fedex.h:846
std::map< DtString, unsigned int > myFomModulesNameToCrcMap
Definition: fedex.h:853
bool myModulesArrived
Definition: fedex.h:955
DtFederateHandleStdSet myInitiatedSaveFederates
Definition: fedex.h:878
unsigned long myInitiatorID
Definition: fedex.h:949
Definition: ownerMsg.h:45
bool myDistributeFedFile
Definition: fedex.h:947
bool myRestore
Definition: fedex.h:876
bool myNetworkTestingEnabled
Whether network testing has been toggled on/off by the assistant.
Definition: fedex.h:954
Definition: fomModuleDistExecMsg.h:26
float myResponseInterval
to obtain response retransmission interval
Definition: fedex.h:873
DtSaveResponseFlag
Definition: savRespMsg.h:22
Definition: syncHashlist.h:21
DtString mySavePath
Definition: fedex.h:884
static const DtString nullStr
Definition: fedex.h:972
Definition: savCompMsg.h:22
DtFederateHandle myDesignatedFederate
Definition: fedex.h:860
bool mySavePending
Definition: fedex.h:885
DtHlaVersionId
Definition: rtiVersion.h:50
Definition: fedHandleSet.h:61
DtString myFedExName
Definition: fedex.h:840
std::vector< bool > myFedHandlesInUse
Definition: fedex.h:838
std::map< DtString, DtFedReadStatus > myFomToReadStatusMap
Definition: fedex.h:891
bool mySaveBegun
Definition: fedex.h:886
float myFederateTimeoutInterval
Definition: fedex.h:861
DtClock myClock
Definition: fedex.h:957
std::map< unsigned long, std::vector< DtString > * > myJoinFomModules
Definition: fedex.h:856
std::map< DtFederateHandle, DtFedExReservedNameSet > DtFedExFederateReservedNameMap
Definition: fedex.h:915
DtList myFedSynchronizedCallbacks
Definition: fedex.h:909
std::set< unsigned long > myAwaitingJoinUpload
Definition: fedex.h:898
Definition: resignMsg.h:36
RTI_API::LogicalTime DtRtiApiTime
Typedefs for RTI API types that frequently require conditional precompile directives.
Definition: rtiApiTypes.h:91
DtFedReader1516_4 * myFedReader1516_2025
Definition: fedex.h:968
std::map< MAKRti::DtString, DtFederateHandle > myFederateHdlsByName
Definition: fedex.h:843
Definition: resignDirectiveMsg.h:24
DtAsyncFileDistributorRunnable * myDistributor
Definition: fedex.h:945
bool myCrcCheckFedFile
Definition: fedex.h:948
std::map< unsigned long, bool > myFedRequests
Definition: fedex.h:894
int myTimeout
Definition: fedex.h:901
DtFederateNameInfoMap myFederatesByName
Definition: fedex.h:842
std::vector< DtString > myCreateFomModules
Definition: fedex.h:855
std::vector< DtString > myFomModules
Definition: fedex.h:850
Sent by Federates to request fed file from RtiExec.
Definition: fomModuleRequestMsg.h:24
errorCodes
error codes for the errorValue flag
Definition: joinRespMsg.h:32
Definition: resReqMsg.h:23
Definition: reserveNameMsg.h:25
Definition: federate.h:39
DtFomClassMgr * myFom
Definition: fedex.h:857
DtList myReconnectSucceededCallbacks
Definition: fedex.h:907
std::pair< DtString, DtFedReadStatus > DtFomToReadStatusPair
Definition: fedex.h:115
std::set< DtString > myFomModulesSet
Definition: fedex.h:854
DtFedReader1516 * myFedReader1516
Definition: fedex.h:966
virtual const MAKRti::DtString fedExName() const
These two functions should be avoided in favor of isForExec().
DtFedReader1516e * myFedReader1516e
Definition: fedex.h:967
bool myUseDestinationMetadata
Definition: fedex.h:839
static DtFedExecCreator theCreator
Definition: fedex.h:963
std::map< const DtString, DtFomClassMgr > myFedexFileToFedTgtMap
Definition: fedex.h:890
Definition: resComMsg.h:22
void(* DtFederateCbFn)(DtFederate *federate, void *usr)
Federate joined/resigned callback prototype.
Definition: fedex.h:96
DtFederateHandleInfoMap myRestoreFederatesByNew
Definition: fedex.h:883
Instances of DtConnectionMgr manage the communication objects that the RTI will use to either communi...
Definition: connectMgr.h:67
DtHandle DtFederateHandle
Definition: internalTypes.h:46
Definition: saveAbortMsg.h:22
Definition: syncPointMsg.h:46
Compares a rid file.
Definition: ridFileTester.h:25
std::map< unsigned long, DtFedJoinInfo * > myJoiningFederatesByID
Definition: fedex.h:867
Sent by Federates to request testing of the RID file from RtiExec.
Definition: transferRidParamsMsg.h:30
Definition: distributorThreadEvents.h:205
Definition: restoreAbortMsg.h:22
bool myFullFedFileDistribution
Definition: fedex.h:973
Definition: releaseMultiNameMsg.h:25
DtCreateResponseFlag
Definition: creRespMsg.h:23
DtList mySpRegisterCallbacks
Definition: fedex.h:911
DtEndRestoreResult
Definition: resEndMsg.h:21
DtFederateHandleStdSet myPendingSaveFederates
Definition: fedex.h:877
DtList myDisconnectCallbacks
Definition: fedex.h:906
bool myAllowResignActionOverride
Definition: fedex.h:863
int myFedExHandle
Definition: fedex.h:859
DtRtiApiUniquePtr< DtRtiApiTime > DtRtiApiUniquePtrTime
Definition: rtiApiTypes.h:96
DtResignAction myResignAction
Definition: fedex.h:862
int myNumberResponseAttempts
Response interval from params is divided by this number.
Definition: fedex.h:871
Definition: fomModuleDistributionMsg.h:25
int myFreeFedHandle
Definition: fedex.h:837
Definition: savTimeAdvMsg.h:21
Definition: queryRestoreStatusMsg.h:22
Definition: reserveMultiNameMsg.h:25
DtSyncHashlist mySyncList
Definition: fedex.h:845
Definition: savBegMsg.h:22
Distributes fomModule files from initiating federate to RtiExec and then from RtiExec to all joining ...
Definition: asynchronousFileDistributor.h:33
DtFederateHandle mySavingFederate
Definition: fedex.h:880
Definition: initiatedSaveMsg.h:21
DtRtiExec * myRtiexec
Definition: fedex.h:835
Definition: savReqMsg.h:23
std::map< DtString, DtFileInformation * > myTakenFiles
Definition: fedex.h:888
DtFedExFederateReservedNameMap myFederateReservedNames
Definition: fedex.h:917
Definition: resBegMsg.h:28
DtFederateHandleStdSet myPendingRestoreFederates
Definition: fedex.h:881
std::map< DtString, DtFederate * > DtFederateNameInfoMap
Federate name -> Federate info map.
Definition: fedex.h:111
bool myFullyCreated
Definition: fedex.h:899
Definition: distributorThreadEvents.h:238
RTI_API::FederateRestoreStatusVector DtRtiApiFederateRestoreStatusVector
Definition: rtiApiTypes.h:108
DtList myResignCallbacks
Definition: fedex.h:905
DtString mySaveLabel
Definition: fedex.h:879
std::pair< const DtString, DtFomClassMgr > DtFileToFedTgtPair
Definition: fedex.h:113
Definition: joinRespMsg.h:33
DtList myJoinCallbacks
Definition: fedex.h:904
RTI_API::LogicalTimeInterval DtRtiApiTimeInterval
Definition: rtiApiTypes.h:92
DtSyncPointStatus
Definition: syncPointMsg.h:36
Defines a ThreadedObject which can run a DtRunnable object in a thread.
DtFederateHandleInfoMap myFederates
Definition: fedex.h:841
DtFedExReservedNameSet myReservedNames
Definition: fedex.h:916
void(* DtSyncPointCbFn)(DtSyncPt *pt, void *usr)
Synchronization point registered/synchronized callback prototype.
Definition: fedex.h:102
DtSyncMsgType
Definition: syncPointMsg.h:25
int myStrictNameReservation
Definition: fedex.h:950
void(* DtSyncPointAchievedCbFn)(DtFederate *who, DtSyncPt *pt, void *usr)
Synchronization point achieved callback prototype.
Definition: fedex.h:105
Definition: querySaveStatusMsg.h:22
The client connection to the RTI Assistant for the rtiexec.
Definition: rtiAssistantExecClient.h:23
static const std::vector< DtString > theEmptyStringSet
Definition: fedex.h:946
std::set< DtFederateHandle > DtFederateHandleStdSet
Definition: internalTypes.h:47
std::vector< DtFederateNameTypePair > DtFederateList
Definition: reportFederationMembersMsg.h:24
int myNumFederates
Definition: fedex.h:844
DtResignReason
Definition: resignMsg.h:26
#define DT_DLL_EXEC
Definition: rtiMsConfig.h:152
virtual int fedExHandle() const
Get the federation execution identifier as a handle Returns 0 if the identifier is being represented ...
vrlmod::DtThreadedObject * myDistributorThread
DtTIME.
Definition: fedex.h:944
DtResignResponse
Definition: resignRespMsg.h:12
DtList mySpAchievedCallbacks
Definition: fedex.h:910
std::map< DtFederateHandle, DtFederate * > DtFederateHandleInfoMap
Federate handle -> Federate info map.
Definition: fedex.h:108
std::map< DtFederateHandle, DtFedJoinInfo * > myJoiningFederates
List of joining federates waiting to be processed and confirmed.
Definition: fedex.h:866
bool mySave
Definition: fedex.h:875
Definition: vlThreadedObject.h:45