16 #include <vlutil/vlString.h>
17 #include <vlutil/vlUtil.h>
38 #include "mtl/fedReader13.h"
39 #include "mtl/fedReader1516.h"
40 #include "mtl/fedReader1516e.h"
41 #include <mtl/fomSorter.h>
54 class DtConstrainedSyncMsg;
56 class DtEnableRegulationMsg;
57 class DtEnableConstrainedMsg;
60 class DtNextEventRequestMsg;
70 class DtSaveRequestTsoMsg;
76 class DtTimeAdvanceRequestMsg;
88 #define RTINAMESPACE rti1516
89 #elif defined(DtIFSPEC1516E)
90 #define RTINAMESPACE rti1516e
97 const std::vector<unsigned int> & crcs,
99 std::string
const & timeImplName,
100 MAKRti::DtFomType fedType,
101 const DtString& momModuleName,
102 const std::vector<DtString>& fedFileName,
105 unsigned int momModuleCrc);
137 const std::vector<unsigned int> & crcs, DtString
const & fedExName,
138 std::string
const & timeImplName, MAKRti::DtFomType fedType,
139 const DtString& momModuleName,
140 const std::vector<DtString >& modules,
155 virtual const DtString& fedExName()
const;
158 virtual int fedExHandle()
const;
162 virtual const DtString& fedFileName()
const;
165 virtual const std::vector<DtString>& fomModules()
const;
168 virtual bool fullyCreated()
const;
171 virtual void setFullyCreated(
bool val);
174 virtual unsigned long creatorID()
const;
177 virtual void createDistributor(
const unsigned long initiatingFedID,
178 const DtString& momModuleName,
179 const std::vector<DtString>& fomModules );
182 virtual int numFederates()
const;
190 virtual DtFederateHandle federateHandleOfConnection(
unsigned long connId)
const;
193 virtual void disconnectFederate(
DtFederate* fed );
196 virtual bool removeFederateConnection(
unsigned long id);
203 unsigned long newConnId,
unsigned long& oldConnId);
206 virtual void reconnectFederateSucceeded(
DtFederate* fed );
209 virtual void reconnectFederateFailed(
DtFederate* fed );
221 virtual void resetClockForHeartBeat();
227 virtual void printFederates();
230 virtual void addFederateJoinedCallback(
DtFederateCbFn fn,
void* usr);
233 virtual void removeFederateJoinedCallback(
DtFederateCbFn fn,
void* usr);
236 virtual void addFederateResignedCallback(
DtFederateCbFn fn,
void* usr);
239 virtual void removeFederateResignedCallback(
DtFederateCbFn fn,
void* usr);
243 virtual void addSyncPtRegisteredCallback(
DtSyncPointCbFn fn,
void* usr);
247 virtual void removeSyncPtRegisteredCallback(
DtSyncPointCbFn fn,
void* usr);
259 virtual void addFederationSynchronizedCallback(
DtSyncPointCbFn fn,
void* usr);
263 virtual void removeFederationSynchronizedCallback(
DtSyncPointCbFn fn,
void* usr);
266 virtual void addFederateDisconnectedCallback(
DtFederateCbFn fn,
void* usr );
269 virtual void removeFederateDisconnectedCallback(
DtFederateCbFn fn,
void* usr );
272 virtual void addFederateReconnectSucceededCallback(
DtFederateCbFn fn,
void* usr );
275 virtual void removeFederateReconnectSucceededCallback(
DtFederateCbFn fn,
void* usr );
278 virtual void addFederateReconnectFailedCallback(
DtFederateCbFn fn,
void* usr );
281 virtual void removeFederateReconnectFailedCallback(
DtFederateCbFn fn,
void* usr );
290 void pushFomModuleToJoinedFederates(
DtFederate* newFederate,
292 unsigned int fileSize,
293 const char* fileBuffer );
298 unsigned int fileSize,
299 const char* fileBuffer );
314 virtual const DtTimeInfoList* regulatingFederates()
const;
318 virtual const DtTimeInfoList* constrainedFederates()
const;
322 virtual void disableNetworkTesting();
325 virtual void enableNetworkTesting();
329 bool continuous,
bool haltContinuous,
bool observing,
330 unsigned int interactionPeriod,
unsigned int numInteractions,
331 unsigned int payloadBytes );
334 virtual bool transferRidParams(
DtFederateHandle handle,
const DtString& ridString);
341 static void processJoinMsg(
const DtJoinMsg& msg,
void* usr);
343 static void processAlive(
const DtAliveMsg& msg,
void* usr);
344 static void processResign(
const DtResignMsg& msg,
void* usr);
345 static void processSyncPoint(
const DtSyncPointMsg& msg,
void* usr);
350 static void processSaveBegun(
const DtSaveBegunMsg& msg,
void* usr);
351 static void processAbortSave(
const DtAbortSaveMsg& msg,
void* usr);
357 static void processOwnership(
const DtOwnershipMsg& msg,
void* usr);
367 static void processSaveRequestTso(
const DtSaveRequestTsoMsg& msg,
void* usr);
368 static void processEnableRegulation(
const DtEnableRegulationMsg& msg,
370 static void processEnableConstrained(
const DtEnableConstrainedMsg& msg,
372 static void processTimeAdvanceRequest(
const DtTimeAdvanceRequestMsg& msg,
374 static void processDisable(
const DtDisableMsg& msg,
void* usr);
375 static void processConstrainedSync(
const DtConstrainedSyncMsg& msg,
377 static void processNextEventRequest(
const DtNextEventRequestMsg& msg,
393 const std::vector<unsigned int> & crcs,
394 DtString
const & fedExName,
395 std::string
const & timeImplName,
396 MAKRti::DtFomType fedType,
397 DtString
const& momModuleName,
398 const std::vector<DtString>& fomModules,
401 unsigned int momModuleCrc);
413 virtual const std::map< unsigned long, std::vector<DtString>*>& joinFomModules()
const;
415 virtual std::vector<DtString>& joinFomModulesForConnection(
unsigned long connID)
const;
418 virtual const std::vector<DtString>& createFomModules()
const;
423 virtual void processJoinMsg(
const DtJoinMsg& msg);
424 virtual bool handleJoinFailureCases(
const DtJoinMsg &msg );
425 virtual void requestFedFileUpload(
const DtJoinMsg& msg );
428 virtual void processAlive(
const DtAliveMsg& msg);
429 virtual void processResign(
const DtResignMsg& msg);
449 virtual void processEnableRegulation(
const DtEnableRegulationMsg& msg);
450 virtual void processEnableConstrained(
const DtEnableConstrainedMsg& msg);
451 virtual void processTimeAdvanceRequest(
const DtTimeAdvanceRequestMsg& msg);
452 virtual void processDisable(
const DtDisableMsg& msg);
453 virtual void processConstrainedSync(
const DtConstrainedSyncMsg& msg);
454 virtual void processSaveRequestTso(
const DtSaveRequestTsoMsg& msg);
456 virtual void processNextEventRequest(
const DtNextEventRequestMsg& msg);
471 virtual void processSyncPtAchievedCallbacks(
DtSyncPt* point,
475 virtual void processFederationSynchronizedCallbacks(
DtSyncPt* point);
480 virtual bool synchronized(
DtSyncPt* point,
491 const char* federateType,
const char* federateName,
DtFederateHandle handle,
492 unsigned long connHandle,
int astntCompId,
const char* fedHostName,
498 const char* federateType,
const char* federateName,
500 const char* fedHostname, MAKRti::DtInetAddr host,
515 DtString& errorResponseString, DtFedReadStatus& status,
516 DtFomSorter* myFomSorter );
519 virtual void readJoinFoms( std::vector<DtString>& fomFiles,
521 DtFedReadStatus& status, DtFomSorter* myFomSorter );
524 virtual bool processCreateReady();
528 virtual bool processJoin(
unsigned long connID,
const DtFedJoinInfo* fedInfo);
531 virtual void processJoinReady();
534 virtual void destroyDistributor();
544 virtual unsigned int numberFederatesAllowed(
unsigned int numPartners)
const;
547 virtual void resetControl();
550 virtual bool tickDistributor();
553 virtual bool processEvents();
558 DtFedReader * getReader(DtFomType theFomType);
559 DtFedReader * getReader( DtFomType theFomType,
DtFomClassMgr* target);
561 void populateWithUnknownFoms(std::vector<DtString> & mods, std::vector<DtString> & requestedMods);
562 bool isFomAvailable(
const DtString & fomName);
563 bool doesCrcMatchKnownFomModuleCrc(
const DtString & fomName,
unsigned int myTakenFomCrc );
566 virtual bool fedFileReady(
const MAKRti::DtString& fileName)
const;
569 virtual bool fedFilesReady(
const std::vector<MAKRti::DtString>* fileNames )
const;
572 virtual bool addJoinFomModuleForConnection(
unsigned long connId,
573 const std::vector<MAKRti::DtString>& modulesFromJoinRequest );
576 virtual void removeJoinFomModuleForConnection(
unsigned long connID );
581 virtual void tickSaveRestore();
585 virtual void tickJoin();
589 virtual void tickFederates();
594 virtual void sendSyncPointMsg(
598 RTINAMESPACE::VariableLengthData
const* theTag = NULL,
602 virtual void sendResignMsg(
605 const DtTimeInfo* timeInfo );
606 virtual void sendEnableDisableNetworkTestingMsg(
607 const char* name,
bool enabled );
608 virtual void sendTransferRidParamsMsg(
610 virtual void sendJoinResponseMsg(
unsigned long destinationIDValue,
611 unsigned short requestID,
unsigned int crcOfFedFile,
DtFederateHandle handle,
612 const char* federateName,
int fedExHandle,
const char* fedExName,
613 const DtString& momModule,
const std::vector<MAKRti::DtString>& modules,
614 unsigned long flags,
bool allowNetworkTesting,
bool enableNetworkTesting,
617 const DtString& errorString = DtString::nullString());
619 virtual void sendSaveInitiateMsg(
const char* labelVal);
620 virtual void sendSaveInitiateConstrainedMsg(
const char* labelVal);
622 unsigned long requestID,
const char* labelVal,
626 char const* objectName,
bool result);
628 std::set< std::wstring >
const & objectNames,
638 virtual void sendRegulationEnabledMsg(
641 virtual void sendConstrainedEnabledMsg(
648 virtual void sendNerLbtsMsg(
650 bool nerPending,
bool lagNerPending,
653 virtual void sendSyncConstrainedMsg();
657 virtual void sendSaveTimeMsg(
char const* label,
662 virtual void retireSyncPoint(
const char* name);
671 virtual void checkTimedSave();
674 virtual void initiateSave(
const char* label);
678 virtual bool save(
const char* label );
682 virtual int initializeRestore(
const char* label );
686 virtual bool restore(
const char* label );
696 virtual DtString& getSaveFileName(
const char* label, MAKRti::DtString& fileName,
697 bool extendName=
true);
701 virtual DtString& getRestoreFileName(
const char* label, MAKRti::DtString& fileName);
711 void removeRegulatingEntry(DtTimeInfo* entry);
714 virtual void checkPendingConstrained(
DtRtiApiTime const & lbts);
717 virtual void checkPendingConstrained(DtTimeInfo* entry,
722 virtual bool becomeConstrained(DtTimeInfo* entry);
726 void adjustRegulatingEntry(DtTimeInfo* entry,
729 bool isTimeAvailable);
754 virtual void destroyTempTimePool();
768 virtual bool minTimeAvailable()
const;
772 virtual bool lagTimeAvailable()
const;
787 virtual bool minNerPending()
const;
790 virtual bool lagNerPending()
const;
805 virtual void setFederateHandleSlotInUse(
DtFederateHandle handle,
bool isInUse);
811 virtual int getNextFreeFedHandle();
896 typedef std::map< DtFederateHandle, DtFedExReservedNameSet >
903 DtTimeInfoList myRegulatingFederates;
904 DtTimeInfoList myConstrainedFederates;
905 DtTimeInfoList myPendingConstrained;
906 DtTimeInfoList myPendingTar;
907 DtTimeInfoList myPendingRegulation;
908 DtTimeInfoList myNerLbtsList;
909 DtTimeInfoList myNerRequested;
910 DtTimeInfoList myPendingNerResponses;
911 bool myNewNerRequestPending;
912 bool myForceNerCycle;
914 bool myTransmitLaggardLBTS;
915 DtList mySyncConstrained;
916 unsigned long myNerCycle;
919 DtList myTempTimePool;
920 std::auto_ptr<DtRtiApiTime> myPositiveInfinity;
921 std::auto_ptr<DtRtiApiTime> mySaveTime;
922 std::auto_ptr<DtRtiApiTime> myNerLbts;
923 std::auto_ptr<DtRtiApiTime> myLagNerLbts;
std::set< unsigned long > myConnectionsProcessJoined
Definition: fedex.h:849
Definition: distributorThreadEvents.h:221
int myDefaultWait
Definition: fedex.h:883
std::set< DtFederateHandle > myPendingRestoreFederates
Definition: fedex.h:865
DtList myReconnectFailedCallbacks
Definition: fedex.h:890
unsigned int myNumberFederatesAllowed
Definition: fedex.h:940
Definition: syncPointQueryMsg.h:31
std::vector< unsigned int > myCreationFedFilesCRCs
Definition: fedex.h:835
DtFedReader13 * myFedReader13
Definition: fedex.h:946
MAKRti::DtFomType myFedType
Definition: fedex.h:836
Definition: aliveMsg.h:24
unsigned int myMomModuleCrc
Definition: fedex.h:834
DtSaveFinishedResult
Definition: savFinMsg.h:21
std::set< std::string > DtFedExReservedNameSet
Definition: fedex.h:895
unsigned int myCrcOfFedFile
Definition: fedex.h:823
Definition: joinConfMsg.h:24
DtFederateHandleInfoMap myRestoreFederatesByOld
Definition: fedex.h:866
bool myAwaitingCreateUpload
Definition: fedex.h:877
unsigned long myCreatorConnId
Definition: fedex.h:878
bool myAllowNetworkTesting
Whether network testing is enabled or completely disabled by the RID.
Definition: fedex.h:934
This class manages the RTI's start-up configuration using both MTL variables and functions.
Definition: RIDparams.h:87
!DtIFSPEC1516
Definition: fedTimeFactory.h:190
DtString myMomModule
Definition: fedex.h:833
std::map< DtString, unsigned int > myFomModulesNameToCrcMap
Definition: fedex.h:840
DtFederateHandleStdSet myInitiatedSaveFederates
Definition: fedex.h:862
unsigned long myInitiatorID
Definition: fedex.h:931
Definition: ownerMsg.h:45
bool myDistributeFedFile
Definition: fedex.h:929
bool myRestore
Definition: fedex.h:860
bool myNetworkTestingEnabled
Whether network testing has been toggled on/off by the assistant.
Definition: fedex.h:936
Definition: fomModuleDistExecMsg.h:26
float myResponseInterval
to obtain response retransmission interval
Definition: fedex.h:857
DtSaveResponseFlag
Definition: savRespMsg.h:22
Definition: syncHashlist.h:21
DtString mySavePath
Definition: fedex.h:868
static const DtString nullStr
Definition: fedex.h:952
Definition: savCompMsg.h:22
DtFederateHandle myDesignatedFederate
Definition: fedex.h:846
bool mySavePending
Definition: fedex.h:869
DtHlaVersionId
Definition: rtiVersion.h:41
Definition: fedHandleSet.h:102
DtString myFedExName
Definition: fedex.h:827
int myFomModuleSorting
Definition: fedex.h:884
std::vector< bool > myFedHandlesInUse
Definition: fedex.h:825
std::map< DtString, DtFedReadStatus > myFomToReadStatusMap
Definition: fedex.h:875
bool mySaveBegun
Definition: fedex.h:870
float myFederateTimeoutInterval
Definition: fedex.h:847
DtClock myClock
Definition: fedex.h:938
std::map< unsigned long, std::vector< DtString > * > myJoinFomModules
Definition: fedex.h:843
std::map< DtFederateHandle, DtFedExReservedNameSet > DtFedExFederateReservedNameMap
Definition: fedex.h:897
DtList myFedSynchronizedCallbacks
Definition: fedex.h:891
std::set< unsigned long > myAwaitingJoinUpload
Definition: fedex.h:879
Definition: resignMsg.h:36
std::map< MAKRti::DtString, DtFederateHandle > myFederateHdlsByName
Definition: fedex.h:830
DtAsyncFileDistributorRunnable * myDistributor
Definition: fedex.h:927
RTI::FedTime DtRtiApiTimeInterval
Definition: rtiApiTypes.h:50
bool myCrcCheckFedFile
Definition: fedex.h:930
int myTimeout
Definition: fedex.h:882
DtFederateNameInfoMap myFederatesByName
Definition: fedex.h:829
std::set< DtFederateHandle > myPendingSaveFederates
Definition: fedex.h:861
std::vector< DtString > myCreateFomModules
Definition: fedex.h:842
std::vector< DtString > myFomModules
Definition: fedex.h:837
DtConnectionMgr * myConnectionMgr
Definition: fedex.h:822
Sent by Federates to request fed file from RtiExec.
Definition: fomModuleRequestMsg.h:28
errorCodes
error codes for the errorValue flag
Definition: joinRespMsg.h:31
Definition: resReqMsg.h:23
Definition: reserveNameMsg.h:25
Definition: federate.h:39
DtFomClassMgr * myFom
Definition: fedex.h:844
DtList myReconnectSucceededCallbacks
Definition: fedex.h:889
std::pair< DtString, DtFedReadStatus > DtFomToReadStatusPair
Definition: fedex.h:128
std::set< DtString > myFomModulesSet
Definition: fedex.h:841
DtFedReader1516 * myFedReader1516
Definition: fedex.h:947
virtual const MAKRti::DtString fedExName() const
These two functions should be avoided in favor of isForExec().
DtFedReader1516e * myFedReader1516e
Definition: fedex.h:948
bool myUseDestinationMetadata
Definition: fedex.h:826
static DtFedExecCreator theCreator
Definition: fedex.h:944
std::map< const DtString, DtFomClassMgr > myFedexFileToFedTgtMap
Definition: fedex.h:874
Definition: resComMsg.h:22
void(* DtFederateCbFn)(DtFederate *federate, void *usr)
Federate joined/resigned callback prototype.
Definition: fedex.h:109
DtFederateHandleInfoMap myRestoreFederatesByNew
Definition: fedex.h:867
Instances of DtConnectionMgr manage the communication objects that the RTI will use to either communi...
Definition: connectMgr.h:60
DtHandle DtFederateHandle
Definition: internalTypes.h:29
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:853
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:953
Definition: releaseMultiNameMsg.h:25
DtCreateResponseFlag
Definition: creRespMsg.h:23
DtList mySpRegisterCallbacks
Definition: fedex.h:893
DtEndRestoreResult
Definition: resEndMsg.h:21
DtList myDisconnectCallbacks
Definition: fedex.h:888
int myFedExHandle
Definition: fedex.h:845
std::vector< FederateHandleSaveStatusPair > FederateHandleSaveStatusPairVector
Definition: Typedefs.h:65
int myNumberResponseAttempts
Response interval from params is divided by this number.
Definition: fedex.h:855
Definition: fomModuleDistributionMsg.h:25
int myFreeFedHandle
Definition: fedex.h:824
Definition: savTimeAdvMsg.h:21
Definition: queryRestoreStatusMsg.h:22
Definition: reserveMultiNameMsg.h:25
DtSyncHashlist mySyncList
Definition: fedex.h:832
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:864
Definition: initiatedSaveMsg.h:21
Definition: savReqMsg.h:23
std::map< DtString, DtFileInformation * > myTakenFiles
Definition: fedex.h:872
DtFedExFederateReservedNameMap myFederateReservedNames
Definition: fedex.h:899
Definition: resBegMsg.h:28
std::map< DtString, DtFederate * > DtFederateNameInfoMap
Federate name -> Federate info map.
Definition: fedex.h:124
bool myFullyCreated
Definition: fedex.h:880
Definition: distributorThreadEvents.h:238
DtList myResignCallbacks
Definition: fedex.h:887
DtString mySaveLabel
Definition: fedex.h:863
std::pair< const DtString, DtFomClassMgr > DtFileToFedTgtPair
Definition: fedex.h:126
Definition: joinRespMsg.h:32
DtList myJoinCallbacks
Definition: fedex.h:886
DtSyncPointStatus
Definition: syncPointMsg.h:36
Defines a ThreadedObject which can run a DtRunnable object in a thread.
DtFedExec *(* DtFedExecCreator)(DtConnectionMgr *connMgr, 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:96
DtFederateHandleInfoMap myFederates
Definition: fedex.h:828
DtFedExReservedNameSet myReservedNames
Definition: fedex.h:898
void(* DtSyncPointCbFn)(DtSyncPt *pt, void *usr)
Synchronization point registered/synchronized callback prototype.
Definition: fedex.h:115
DtSyncMsgType
Definition: syncPointMsg.h:25
int myStrictNameReservation
Definition: fedex.h:932
RTI::FedTime DtRtiApiTime
Typedefs for RTI API types that are frequently require conditional precompile directives.
Definition: rtiApiTypes.h:49
void(* DtSyncPointAchievedCbFn)(DtFederate *who, DtSyncPt *pt, void *usr)
Synchronization point achieved callback prototype.
Definition: fedex.h:118
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:928
std::vector< FederateRestoreStatus > FederateRestoreStatusVector
Definition: Typedefs.h:83
std::set< DtFederateHandle > DtFederateHandleStdSet
Definition: internalTypes.h:30
int myNumFederates
Definition: fedex.h:831
DtResignReason
Definition: resignMsg.h:26
#define DT_DLL_EXEC
Definition: rtiMsConfig.h:123
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:926
DtResignResponse
Definition: resignRespMsg.h:12
DtList mySpAchievedCallbacks
Definition: fedex.h:892
std::map< DtFederateHandle, DtFederate * > DtFederateHandleInfoMap
Federate handle -> Federate info map.
Definition: fedex.h:121
std::map< DtFederateHandle, DtFedJoinInfo * > myJoiningFederates
List of joining federates for which a join confirm is expected.
Definition: fedex.h:852
bool mySave
Definition: fedex.h:859
Definition: vlThreadedObject.h:45