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"
53 class DtConstrainedSyncMsg;
55 class DtEnableRegulationMsg;
56 class DtEnableConstrainedMsg;
59 class DtNextEventRequestMsg;
69 class DtSaveRequestTsoMsg;
75 class DtTimeAdvanceRequestMsg;
92 #define RTINAMESPACE rti1516
93 #elif defined(DtIFSPEC1516E)
94 #define RTINAMESPACE rti1516e
101 const std::vector<unsigned int> & crcs,
102 DtString
const & fedExName,
103 std::string
const & timeImplName,
104 MAKRti::DtFomType fedType,
105 const DtString& momModuleName,
106 const std::vector<DtString>& fedFileName,
109 unsigned int momModuleCrc);
141 const std::vector<unsigned int> & crcs, DtString
const & fedExName,
142 std::string
const & timeImplName, MAKRti::DtFomType fedType,
143 const DtString& momModuleName,
144 const std::vector<DtString >& modules,
159 virtual const DtString& fedExName()
const;
162 virtual int fedExHandle()
const;
166 virtual const DtString& fedFileName()
const;
169 virtual const std::vector<DtString>& fomModules()
const;
172 virtual bool fullyCreated()
const;
175 virtual void setFullyCreated(
bool val);
178 virtual unsigned long creatorID()
const;
181 virtual void createDistributor(
const unsigned long initiatingFedID,
182 const DtString& momModuleName,
183 const std::vector<DtString>& fomModules );
186 virtual int numFederates()
const;
194 virtual DtFederateHandle federateHandleOfConnection(
unsigned long connId)
const;
197 virtual void disconnectFederate(
DtFederate* fed );
200 virtual bool removeFederateConnection(
unsigned long id);
207 unsigned long newConnId,
unsigned long& oldConnId);
210 virtual void reconnectFederateSucceeded(
DtFederate* fed );
213 virtual void reconnectFederateFailed(
DtFederate* fed );
225 virtual void resetClockForHeartBeat();
231 virtual void printFederates();
234 virtual void addFederateJoinedCallback(
DtFederateCbFn fn,
void* usr);
237 virtual void removeFederateJoinedCallback(
DtFederateCbFn fn,
void* usr);
240 virtual void addFederateResignedCallback(
DtFederateCbFn fn,
void* usr);
243 virtual void removeFederateResignedCallback(
DtFederateCbFn fn,
void* usr);
247 virtual void addSyncPtRegisteredCallback(
DtSyncPointCbFn fn,
void* usr);
251 virtual void removeSyncPtRegisteredCallback(
DtSyncPointCbFn fn,
void* usr);
263 virtual void addFederationSynchronizedCallback(
DtSyncPointCbFn fn,
void* usr);
267 virtual void removeFederationSynchronizedCallback(
DtSyncPointCbFn fn,
void* usr);
270 virtual void addFederateDisconnectedCallback(
DtFederateCbFn fn,
void* usr );
273 virtual void removeFederateDisconnectedCallback(
DtFederateCbFn fn,
void* usr );
276 virtual void addFederateReconnectSucceededCallback(
DtFederateCbFn fn,
void* usr );
279 virtual void removeFederateReconnectSucceededCallback(
DtFederateCbFn fn,
void* usr );
282 virtual void addFederateReconnectFailedCallback(
DtFederateCbFn fn,
void* usr );
285 virtual void removeFederateReconnectFailedCallback(
DtFederateCbFn fn,
void* usr );
294 void pushFomModuleToJoinedFederates(
DtFederate* newFederate,
296 unsigned int fileSize,
297 const char* fileBuffer );
302 unsigned int fileSize,
303 const char* fileBuffer );
318 virtual const DtTimeInfoList* regulatingFederates()
const;
322 virtual const DtTimeInfoList* constrainedFederates()
const;
326 virtual void disableNetworkTesting();
329 virtual void enableNetworkTesting();
333 bool continuous,
bool haltContinuous,
bool observing,
334 unsigned int interactionPeriod,
unsigned int numInteractions,
335 unsigned int payloadBytes );
338 virtual bool transferRidParams(
DtFederateHandle handle,
const DtString& ridString);
345 static void processJoinMsg(
const DtJoinMsg& msg,
void* usr);
347 static void processAlive(
const DtAliveMsg& msg,
void* usr);
348 static void processResign(
const DtResignMsg& msg,
void* usr);
349 static void processSyncPoint(
const DtSyncPointMsg& msg,
void* usr);
354 static void processSaveBegun(
const DtSaveBegunMsg& msg,
void* usr);
355 static void processAbortSave(
const DtAbortSaveMsg& msg,
void* usr);
361 static void processOwnership(
const DtOwnershipMsg& msg,
void* usr);
371 static void processSaveRequestTso(
const DtSaveRequestTsoMsg& msg,
void* usr);
372 static void processEnableRegulation(
const DtEnableRegulationMsg& msg,
374 static void processEnableConstrained(
const DtEnableConstrainedMsg& msg,
376 static void processTimeAdvanceRequest(
const DtTimeAdvanceRequestMsg& msg,
378 static void processDisable(
const DtDisableMsg& msg,
void* usr);
379 static void processConstrainedSync(
const DtConstrainedSyncMsg& msg,
381 static void processNextEventRequest(
const DtNextEventRequestMsg& msg,
397 const std::vector<unsigned int> & crcs,
398 DtString
const & fedExName,
399 std::string
const & timeImplName,
400 MAKRti::DtFomType fedType,
401 DtString
const& momModuleName,
402 const std::vector<DtString>& fomModules,
405 unsigned int momModuleCrc);
417 virtual const std::map< unsigned long, std::vector<DtString>*>& joinFomModules()
const;
419 virtual std::vector<DtString>& joinFomModulesForConnection(
unsigned long connID)
const;
422 virtual const std::vector<DtString>& createFomModules()
const;
427 virtual void processJoinMsg(
const DtJoinMsg& msg);
428 virtual bool handleJoinFailureCases(
const DtJoinMsg &msg );
429 virtual void requestFedFileUpload(
const DtJoinMsg& msg );
432 virtual void processAlive(
const DtAliveMsg& msg);
433 virtual void processResign(
const DtResignMsg& msg);
453 virtual void processEnableRegulation(
const DtEnableRegulationMsg& msg);
454 virtual void processEnableConstrained(
const DtEnableConstrainedMsg& msg);
455 virtual void processTimeAdvanceRequest(
const DtTimeAdvanceRequestMsg& msg);
456 virtual void processDisable(
const DtDisableMsg& msg);
457 virtual void processConstrainedSync(
const DtConstrainedSyncMsg& msg);
458 virtual void processSaveRequestTso(
const DtSaveRequestTsoMsg& msg);
460 virtual void processNextEventRequest(
const DtNextEventRequestMsg& msg);
475 virtual void processSyncPtAchievedCallbacks(
DtSyncPt* point,
479 virtual void processFederationSynchronizedCallbacks(
DtSyncPt* point);
484 virtual bool synchronized(
DtSyncPt* point,
495 const char* federateType,
const char* federateName,
DtFederateHandle handle,
496 unsigned long connHandle,
int astntCompId,
const char* fedHostName,
502 const char* federateType,
const char* federateName,
504 const char* fedHostname, MAKRti::DtInetAddr host,
519 DtString& errorResponseString, DtFedReadStatus& status,
520 MAKRti::DtFomSorter* fomSorter );
523 virtual void readJoinFoms( std::vector<DtString>& fomFiles,
525 DtFedReadStatus& status, MAKRti::DtFomSorter* fomSorter );
528 virtual bool processCreateReady();
532 virtual bool processJoin(
unsigned long connID,
const DtFedJoinInfo* fedInfo);
535 virtual void processJoinReady();
538 virtual void destroyDistributor();
548 virtual unsigned int numberFederatesAllowed(
unsigned int numPartners)
const;
551 virtual void resetControl();
554 virtual bool tickDistributor();
557 virtual bool processEvents();
562 DtFedReader * getReader(DtFomType theFomType);
563 DtFedReader * getReader( DtFomType theFomType,
DtFomClassMgr* target);
565 void populateWithUnknownFoms(std::vector<DtString> & mods, std::vector<DtString> & requestedMods);
566 bool isFomAvailable(
const DtString & fomName);
567 bool doesCrcMatchKnownFomModuleCrc(
const DtString & fomName,
unsigned int myTakenFomCrc );
570 virtual bool fedFileReady(
const MAKRti::DtString& fileName)
const;
573 virtual bool fedFilesReady(
const std::vector<MAKRti::DtString>* fileNames )
const;
576 virtual bool addJoinFomModuleForConnection(
unsigned long connId,
577 const std::vector<MAKRti::DtString>& modulesFromJoinRequest );
580 virtual void removeJoinFomModuleForConnection(
unsigned long connID );
585 virtual void tickSaveRestore();
589 virtual void tickJoin();
593 virtual void tickFederates();
598 virtual void sendSyncPointMsg(
602 RTINAMESPACE::VariableLengthData
const* theTag = NULL,
606 virtual void sendResignMsg(
609 const DtTimeInfo* timeInfo );
610 virtual void sendEnableDisableNetworkTestingMsg(
611 const char* name,
bool enabled );
612 virtual void sendTransferRidParamsMsg(
614 virtual void sendJoinResponseMsg(
unsigned long destinationIDValue,
615 unsigned short requestID,
unsigned int crcOfFedFile,
DtFederateHandle handle,
616 const char* federateName,
int fedExHandle,
const char* fedExName,
617 const DtString& momModule,
const std::vector<MAKRti::DtString>& modules,
618 unsigned long flags,
bool allowNetworkTesting,
bool enableNetworkTesting,
621 const DtString& errorString = DtString::nullString());
623 virtual void sendSaveInitiateMsg(
const char* labelVal);
624 virtual void sendSaveInitiateConstrainedMsg(
const char* labelVal);
626 unsigned long requestID,
const char* labelVal,
630 char const* objectName,
bool result);
632 std::set< std::wstring >
const & objectNames,
636 RTINAMESPACE::FederateRestoreStatusVector
const & restoreStatusList);
642 virtual void sendRegulationEnabledMsg(
645 virtual void sendConstrainedEnabledMsg(
652 virtual void sendNerLbtsMsg(
654 bool nerPending,
bool lagNerPending,
657 virtual void sendSyncConstrainedMsg();
661 virtual void sendSaveTimeMsg(
char const* label,
666 virtual void retireSyncPoint(
const char* name);
675 virtual void checkTimedSave();
678 virtual void initiateSave(
const char* label);
682 virtual bool save(
const char* label );
686 virtual int initializeRestore(
const char* label );
690 virtual bool restore(
const char* label );
700 virtual DtString& getSaveFileName(
const char* label, MAKRti::DtString& fileName,
701 bool extendName=
true);
705 virtual DtString& getRestoreFileName(
const char* label, MAKRti::DtString& fileName);
715 void removeRegulatingEntry(DtTimeInfo* entry);
718 virtual void checkPendingConstrained(
DtRtiApiTime const & lbts);
721 virtual void checkPendingConstrained(DtTimeInfo* entry,
726 virtual bool becomeConstrained(DtTimeInfo* entry);
730 void adjustRegulatingEntry(DtTimeInfo* entry,
733 bool isTimeAvailable);
758 virtual void destroyTempTimePool();
772 virtual bool minTimeAvailable()
const;
776 virtual bool lagTimeAvailable()
const;
791 virtual bool minNerPending()
const;
794 virtual bool lagNerPending()
const;
809 virtual void setFederateHandleSlotInUse(
DtFederateHandle handle,
bool isInUse);
815 virtual int getNextFreeFedHandle();
904 typedef std::map< DtFederateHandle, DtFedExReservedNameSet >
911 DtTimeInfoList myRegulatingFederates;
912 DtTimeInfoList myConstrainedFederates;
913 DtTimeInfoList myPendingConstrained;
914 DtTimeInfoList myPendingTar;
915 DtTimeInfoList myPendingRegulation;
916 DtTimeInfoList myNerLbtsList;
917 DtTimeInfoList myNerRequested;
918 DtTimeInfoList myPendingNerResponses;
919 bool myNewNerRequestPending;
920 bool myForceNerCycle;
922 bool myTransmitLaggardLBTS;
923 DtList mySyncConstrained;
924 unsigned long myNerCycle;
927 DtList myTempTimePool;
928 std::auto_ptr<DtRtiApiTime> myPositiveInfinity;
929 std::auto_ptr<DtRtiApiTime> mySaveTime;
930 std::auto_ptr<DtRtiApiTime> myNerLbts;
931 std::auto_ptr<DtRtiApiTime> myLagNerLbts;
std::vector< FederateHandleSaveStatusPair > FederateHandleSaveStatusPairVector
Definition: Typedefs.h:57
std::set< unsigned long > myConnectionsProcessJoined
Definition: fedex.h:855
Definition: distributorThreadEvents.h:221
int myDefaultWait
Definition: fedex.h:892
std::set< DtFederateHandle > myPendingRestoreFederates
Definition: fedex.h:871
DtList myReconnectFailedCallbacks
Definition: fedex.h:898
unsigned int myNumberFederatesAllowed
Definition: fedex.h:949
Definition: syncPointQueryMsg.h:31
std::vector< unsigned int > myCreationFedFilesCRCs
Definition: fedex.h:839
DtFedReader13 * myFedReader13
Definition: fedex.h:955
MAKRti::DtFomType myFedType
Definition: fedex.h:840
Definition: aliveMsg.h:24
unsigned int myMomModuleCrc
Definition: fedex.h:838
DtSaveFinishedResult
Definition: savFinMsg.h:21
std::set< std::string > DtFedExReservedNameSet
Definition: fedex.h:903
unsigned int myCrcOfFedFile
Definition: fedex.h:827
Definition: joinConfMsg.h:24
DtFederateHandleInfoMap myRestoreFederatesByOld
Definition: fedex.h:872
bool myAwaitingCreateUpload
Definition: fedex.h:886
unsigned long myCreatorConnId
Definition: fedex.h:887
bool myAllowNetworkTesting
Whether network testing is enabled or completely disabled by the RID.
Definition: fedex.h:942
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:837
std::map< DtString, unsigned int > myFomModulesNameToCrcMap
Definition: fedex.h:844
bool myModulesArrived
Definition: fedex.h:945
DtFederateHandleStdSet myInitiatedSaveFederates
Definition: fedex.h:868
unsigned long myInitiatorID
Definition: fedex.h:939
Definition: ownerMsg.h:45
bool myDistributeFedFile
Definition: fedex.h:937
bool myRestore
Definition: fedex.h:866
bool myNetworkTestingEnabled
Whether network testing has been toggled on/off by the assistant.
Definition: fedex.h:944
Definition: fomModuleDistExecMsg.h:26
float myResponseInterval
to obtain response retransmission interval
Definition: fedex.h:863
DtSaveResponseFlag
Definition: savRespMsg.h:22
Definition: syncHashlist.h:21
DtString mySavePath
Definition: fedex.h:874
static const DtString nullStr
Definition: fedex.h:961
Definition: savCompMsg.h:22
DtFederateHandle myDesignatedFederate
Definition: fedex.h:852
bool mySavePending
Definition: fedex.h:875
DtHlaVersionId
Definition: rtiVersion.h:42
Definition: fedHandleSet.h:102
DtString myFedExName
Definition: fedex.h:831
std::vector< bool > myFedHandlesInUse
Definition: fedex.h:829
std::map< DtString, DtFedReadStatus > myFomToReadStatusMap
Definition: fedex.h:881
bool mySaveBegun
Definition: fedex.h:876
float myFederateTimeoutInterval
Definition: fedex.h:853
DtClock myClock
Definition: fedex.h:947
std::map< unsigned long, std::vector< DtString > * > myJoinFomModules
Definition: fedex.h:847
std::map< DtFederateHandle, DtFedExReservedNameSet > DtFedExFederateReservedNameMap
Definition: fedex.h:905
DtList myFedSynchronizedCallbacks
Definition: fedex.h:899
std::set< unsigned long > myAwaitingJoinUpload
Definition: fedex.h:888
Definition: resignMsg.h:36
std::map< MAKRti::DtString, DtFederateHandle > myFederateHdlsByName
Definition: fedex.h:834
DtAsyncFileDistributorRunnable * myDistributor
Definition: fedex.h:935
RTI::FedTime DtRtiApiTimeInterval
Definition: rtiApiTypes.h:50
bool myCrcCheckFedFile
Definition: fedex.h:938
std::map< unsigned long, bool > myFedRequests
Definition: fedex.h:884
int myTimeout
Definition: fedex.h:891
DtFederateNameInfoMap myFederatesByName
Definition: fedex.h:833
std::set< DtFederateHandle > myPendingSaveFederates
Definition: fedex.h:867
std::vector< DtString > myCreateFomModules
Definition: fedex.h:846
std::vector< DtString > myFomModules
Definition: fedex.h:841
DtConnectionMgr * myConnectionMgr
Definition: fedex.h:826
Sent by Federates to request fed file from RtiExec.
Definition: fomModuleRequestMsg.h:28
errorCodes
error codes for the errorValue flag
Definition: joinRespMsg.h:31
MAKRti::DtFomSorter * myFomSorter
Definition: fedex.h:849
Definition: resReqMsg.h:23
Definition: reserveNameMsg.h:25
Definition: federate.h:39
DtFomClassMgr * myFom
Definition: fedex.h:848
DtList myReconnectSucceededCallbacks
Definition: fedex.h:897
std::pair< DtString, DtFedReadStatus > DtFomToReadStatusPair
Definition: fedex.h:132
std::set< DtString > myFomModulesSet
Definition: fedex.h:845
DtFedReader1516 * myFedReader1516
Definition: fedex.h:956
DtFedReader1516e * myFedReader1516e
Definition: fedex.h:957
bool myUseDestinationMetadata
Definition: fedex.h:830
static DtFedExecCreator theCreator
Definition: fedex.h:953
std::map< const DtString, DtFomClassMgr > myFedexFileToFedTgtMap
Definition: fedex.h:880
Definition: resComMsg.h:22
void(* DtFederateCbFn)(DtFederate *federate, void *usr)
Federate joined/resigned callback prototype.
Definition: fedex.h:113
DtFederateHandleInfoMap myRestoreFederatesByNew
Definition: fedex.h:873
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:859
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:962
Definition: releaseMultiNameMsg.h:25
DtCreateResponseFlag
Definition: creRespMsg.h:23
DtList mySpRegisterCallbacks
Definition: fedex.h:901
DtEndRestoreResult
Definition: resEndMsg.h:21
DtList myDisconnectCallbacks
Definition: fedex.h:896
int myFedExHandle
Definition: fedex.h:851
int myNumberResponseAttempts
Response interval from params is divided by this number.
Definition: fedex.h:861
Definition: fomModuleDistributionMsg.h:25
int myFreeFedHandle
Definition: fedex.h:828
Definition: savTimeAdvMsg.h:21
Definition: queryRestoreStatusMsg.h:22
Definition: reserveMultiNameMsg.h:25
DtSyncHashlist mySyncList
Definition: fedex.h:836
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:870
Definition: initiatedSaveMsg.h:21
Definition: savReqMsg.h:23
std::map< DtString, DtFileInformation * > myTakenFiles
Definition: fedex.h:878
DtFedExFederateReservedNameMap myFederateReservedNames
Definition: fedex.h:907
Definition: resBegMsg.h:28
std::map< DtString, DtFederate * > DtFederateNameInfoMap
Federate name -> Federate info map.
Definition: fedex.h:128
bool myFullyCreated
Definition: fedex.h:889
Definition: distributorThreadEvents.h:238
DtList myResignCallbacks
Definition: fedex.h:895
DtString mySaveLabel
Definition: fedex.h:869
std::pair< const DtString, DtFomClassMgr > DtFileToFedTgtPair
Definition: fedex.h:130
Definition: joinRespMsg.h:32
DtList myJoinCallbacks
Definition: fedex.h:894
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:100
DtFederateHandleInfoMap myFederates
Definition: fedex.h:832
DtFedExReservedNameSet myReservedNames
Definition: fedex.h:906
void(* DtSyncPointCbFn)(DtSyncPt *pt, void *usr)
Synchronization point registered/synchronized callback prototype.
Definition: fedex.h:119
DtSyncMsgType
Definition: syncPointMsg.h:25
int myStrictNameReservation
Definition: fedex.h:940
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:122
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:936
std::set< DtFederateHandle > DtFederateHandleStdSet
Definition: internalTypes.h:30
int myNumFederates
Definition: fedex.h:835
DtResignReason
Definition: resignMsg.h:26
#define DT_DLL_EXEC
Definition: rtiMsConfig.h:123
vrlmod::DtThreadedObject * myDistributorThread
DtTIME.
Definition: fedex.h:934
DtResignResponse
Definition: resignRespMsg.h:12
DtList mySpAchievedCallbacks
Definition: fedex.h:900
std::map< DtFederateHandle, DtFederate * > DtFederateHandleInfoMap
Federate handle -> Federate info map.
Definition: fedex.h:125
std::map< DtFederateHandle, DtFedJoinInfo * > myJoiningFederates
List of joining federates for which a join confirm is expected.
Definition: fedex.h:858
bool mySave
Definition: fedex.h:865
Definition: vlThreadedObject.h:45