MAK RTIspy API Documentation for HLA Evolved
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
fedex.h
Go to the documentation of this file.
1 /*********************************************************************
2 ** Copyright (c) 1998 MaK Technologies, Inc.
3 ** All rights reserved.
4 *********************************************************************/
5 /*********************************************************************
6 ** $RCSfile: fedex.h,v $ $Revision: 1.24 $ $State: Exp $
7 *********************************************************************/
8 
11 
12 #ifndef DtFedExec_H_
13 #define DtFedExec_H_
14 
15 #include <rtiMsConfig.h>
16 #include <vlutil/vlString.h>
17 #include <vlutil/vlUtil.h>
18 #include "vlThreadedObject.h"
19 #include <rtiApiTypes.h>
20 #include <connection.h>
21 #include <resignMsg.h>
22 #include <fomMgr.h>
23 
24 #include "federate.h"
25 #include "timeInfoList.h"
27 #include "execCmds.h"
29 
30 #include <joinRespMsg.h>
31 #include <savRespMsg.h>
32 #include <syncPointMsg.h>
33 #include <savFinMsg.h>
34 #include <resEndMsg.h>
35 #include <resignRespMsg.h>
36 #include <creRespMsg.h>
37 
38 #include "mtl/fedReader13.h"
39 #include "mtl/fedReader1516.h"
40 #include "mtl/fedReader1516e.h"
41 
42 
43 class DtRidFileTester;
44 
47 class DtRIDParameters;
48 class DtSyncPt;
49 class DtTimeInfo;
50 
51 class DtAliveMsg;
53 class DtConstrainedSyncMsg;
54 class DtDisableMsg;
55 class DtEnableRegulationMsg;
56 class DtEnableConstrainedMsg;
57 class DtJoinConfirmMsg;
58 class DtJoinMsg;
59 class DtNextEventRequestMsg;
60 class DtOwnershipMsg;
61 class DtResignMsg;
62 class DtRestoreBegunMsg;
65 class DtAbortRestoreMsg;
66 class DtSaveBegunMsg;
67 class DtSaveCompleteMsg;
68 class DtSaveRequestMsg;
69 class DtSaveRequestTsoMsg;
70 class DtAbortSaveMsg;
71 class DtInitiatedSaveMsg;
73 class DtSyncPointMsg;
75 class DtTimeAdvanceRequestMsg;
76 class DtReserveNameMsg;
79 class DtFedExec;
80 class DtFedJoinInfo;
85 
86 namespace MAKRti
87 {
88  class DtFomSorter;
89 }
90 
91 #ifdef DtIFSPEC1516
92 #define RTINAMESPACE rti1516
93 #elif defined(DtIFSPEC1516E)
94 #define RTINAMESPACE rti1516e
95 #else
96 // TODO Unimplemented for HLA 1.3
97 #endif
98 
100 typedef DtFedExec* (*DtFedExecCreator)(DtConnectionMgr* connMgr,
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,
107  int fedExHandle,
108  DtRIDParameters* params,
109  unsigned int momModuleCrc);
110 
111 
113 typedef void (*DtFederateCbFn)(DtFederate* federate, void* usr);
114 
116 typedef void (*DtFederateCbFn)(DtFederate* handle, void* usr );
117 
119 typedef void (*DtSyncPointCbFn)(DtSyncPt* pt, void* usr);
120 
122 typedef void (*DtSyncPointAchievedCbFn)(DtFederate* who, DtSyncPt* pt, void* usr);
123 
125 typedef std::map<DtFederateHandle, DtFederate*> DtFederateHandleInfoMap;
126 
128 typedef std::map<DtString, DtFederate*> DtFederateNameInfoMap;
129 
130 typedef std::pair< const DtString, DtFomClassMgr > DtFileToFedTgtPair;
131 
132 typedef std::pair<DtString, DtFedReadStatus> DtFomToReadStatusPair;
133 
135 {
136 
137 protected:
138 
140  DtFedExec(DtConnectionMgr* connMgr,
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,
145  int fedExHandle, DtRIDParameters* params, unsigned int momModuleCrc);
146 
147 public:
148 
150  virtual ~DtFedExec();
151 
153  virtual DtConnectionMgr* connectMgr();
154 
156  virtual DtLogicalTimeFactory* fedTimeFactory();
157 
159  virtual const DtString& fedExName() const;
160 
162  virtual int fedExHandle() const;
163 
166  virtual const DtString& fedFileName() const;
167 
169  virtual const std::vector<DtString>& fomModules() const;
170 
172  virtual bool fullyCreated() const;
173 
175  virtual void setFullyCreated(bool val);
176 
178  virtual unsigned long creatorID() const;
179 
181  virtual void createDistributor( const unsigned long initiatingFedID,
182  const DtString& momModuleName,
183  const std::vector<DtString>& fomModules );
184 
186  virtual int numFederates() const;
187 
190  virtual DtFederate* getFederate(DtFederateHandle handle);
191 
194  virtual DtFederateHandle federateHandleOfConnection(unsigned long connId) const;
195 
197  virtual void disconnectFederate( DtFederate* fed );
198 
200  virtual bool removeFederateConnection(unsigned long id);
201 
206  virtual bool restoreFederateConnection( DtFederateHandle handle,
207  unsigned long newConnId, unsigned long& oldConnId);
208 
210  virtual void reconnectFederateSucceeded( DtFederate* fed );
211 
213  virtual void reconnectFederateFailed( DtFederate* fed );
214 
216  virtual bool resignFederate(DtFederateHandle handle,
217  DtResignAction action, DtResignReason reason );
218 
225  virtual void resetClockForHeartBeat();
226 
228  virtual bool tick();
229 
231  virtual void printFederates();
232 
234  virtual void addFederateJoinedCallback(DtFederateCbFn fn, void* usr);
235 
237  virtual void removeFederateJoinedCallback(DtFederateCbFn fn, void* usr);
238 
240  virtual void addFederateResignedCallback(DtFederateCbFn fn, void* usr);
241 
243  virtual void removeFederateResignedCallback(DtFederateCbFn fn, void* usr);
244 
247  virtual void addSyncPtRegisteredCallback(DtSyncPointCbFn fn, void* usr);
248 
251  virtual void removeSyncPtRegisteredCallback(DtSyncPointCbFn fn, void* usr);
252 
255  virtual void addSyncPtAchievedCallback(DtSyncPointAchievedCbFn fn, void* usr);
256 
259  virtual void removeSyncPtAchievedCallback(DtSyncPointAchievedCbFn fn, void* usr);
260 
263  virtual void addFederationSynchronizedCallback(DtSyncPointCbFn fn, void* usr);
264 
267  virtual void removeFederationSynchronizedCallback(DtSyncPointCbFn fn, void* usr);
268 
270  virtual void addFederateDisconnectedCallback(DtFederateCbFn fn, void* usr );
271 
273  virtual void removeFederateDisconnectedCallback(DtFederateCbFn fn, void* usr );
274 
275  //Register callbacks for federate reconnect.
276  virtual void addFederateReconnectSucceededCallback(DtFederateCbFn fn, void* usr );
277 
278  //Unregister callbacks for federate reconnect.
279  virtual void removeFederateReconnectSucceededCallback(DtFederateCbFn fn, void* usr );
280 
281  //Register callbacks for federate reconnect.
282  virtual void addFederateReconnectFailedCallback(DtFederateCbFn fn, void* usr );
283 
284  // Unregister callbacks for federate reconnect.
285  virtual void removeFederateReconnectFailedCallback(DtFederateCbFn fn, void* usr );
286 
288  void multFileReceivedCb(const DtFomModuleDistributionMsg& msg);
289 
291  void multFileRequestedCb(const DtFomModuleRequestMsg& msg);
292 
294  void pushFomModuleToJoinedFederates(DtFederate* newFederate,
295  DtString fileName,
296  unsigned int fileSize,
297  const char* fileBuffer );
298 
300  void pushFomModuleToSingleFederate(DtFederateHandle recipient,
301  DtString fileName,
302  unsigned int fileSize,
303  const char* fileBuffer );
304 
306  virtual void processRequestedModulesArrived( const DtRequestedModulesArrivedEvent& e );
307 
309  virtual void processFedFileRequestMsg( const DtFedFileRequestMsgEvent& e);
310 
312  virtual void processFileTransfer(const DtFedExTakeFileEvent& e);
313 
315  virtual DtFederateHandleInfoMap const& federates() const;
316 
317 #ifdef DtTIME
318  virtual const DtTimeInfoList* regulatingFederates() const;
320 
322  virtual const DtTimeInfoList* constrainedFederates() const;
323 #endif
324 
326  virtual void disableNetworkTesting();
327 
329  virtual void enableNetworkTesting();
330 
332  virtual void changeLatencyTestMode( DtFederateHandle handle, bool runTest,
333  bool continuous, bool haltContinuous, bool observing,
334  unsigned int interactionPeriod, unsigned int numInteractions,
335  unsigned int payloadBytes );
336 
338  virtual bool transferRidParams(DtFederateHandle handle, const DtString& ridString);
339 
340 public:
341 
344 
345  static void processJoinMsg(const DtJoinMsg& msg, void* usr);
346  static void processJoinConfirm(const DtJoinConfirmMsg& 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);
350  static void processSyncPointQuery(const DtSyncPointQueryMsg& msg, void* usr);
351  static void processSaveRequest(const DtSaveRequestMsg& msg, void* usr);
352  static void processInitiatedSave(const DtInitiatedSaveMsg& msg, void* usr);
353  static void processSaveComplete(const DtSaveCompleteMsg& msg, void* usr);
354  static void processSaveBegun(const DtSaveBegunMsg& msg, void* usr);
355  static void processAbortSave(const DtAbortSaveMsg& msg, void* usr);
356  static void processRestoreRequest(const DtRestoreRequestMsg& msg, void* usr);
357  static void processRestoreBegun(const DtRestoreBegunMsg& msg, void* usr);
358  static void processRestoreComplete(const DtRestoreCompleteMsg& msg,
359  void* usr);
360  static void processAbortRestore(const DtAbortRestoreMsg& msg, void* usr);
361  static void processOwnership(const DtOwnershipMsg& msg, void* usr);
362  static void processReserveName(DtReserveNameMsg const& msg, void* usr);
363  static void processReserveMultiName(DtReserveMultiNameMsg const& msg, void* usr);
364  static void processReleaseMultiName(DtReleaseMultiNameMsg const& msg, void* usr);
365  static void processQuerySaveStatus(DtQuerySaveStatusMsg const& msg,
366  void* usr);
367  static void processQueryRestoreStatus(DtQueryRestoreStatusMsg const& msg,
368  void* usr);
369 #ifdef DtTIME
370  static void processSaveTimeAdvance(const DtSaveTimeAdvanceMsg& msg, void* usr);
371  static void processSaveRequestTso(const DtSaveRequestTsoMsg& msg, void* usr);
372  static void processEnableRegulation(const DtEnableRegulationMsg& msg,
373  void* usr);
374  static void processEnableConstrained(const DtEnableConstrainedMsg& msg,
375  void* usr);
376  static void processTimeAdvanceRequest(const DtTimeAdvanceRequestMsg& msg,
377  void* usr);
378  static void processDisable(const DtDisableMsg& msg, void* usr);
379  static void processConstrainedSync(const DtConstrainedSyncMsg& msg,
380  void* usr);
381  static void processNextEventRequest(const DtNextEventRequestMsg& msg,
382  void* usr);
383 #endif
384 
385 
387  static void multFileReceivedExecCb(const DtFomModuleDistExecMsg& msg, void* usr);
388 
390  static void multFileReceivedCb( const DtFomModuleDistributionMsg& msg, void* usr );
391 
393  static void multFileRequestedCb( const DtFomModuleRequestMsg& msg, void* usr );
394 
396  static DtFedExec* create(DtConnectionMgr* connMgr,
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,
403  int fedExHandle,
404  DtRIDParameters* params,
405  unsigned int momModuleCrc);
406 
410  static void setCreatorFunction(DtFedExecCreator creator);
411 
412  static void init( DtRtiAssistantExecClient* assistant );
413 
414 protected:
415 
417  virtual const std::map< unsigned long, std::vector<DtString>*>& joinFomModules() const;
418 
419  virtual std::vector<DtString>& joinFomModulesForConnection(unsigned long connID) const;
420 
422  virtual const std::vector<DtString>& createFomModules() const;
423 
426 
427  virtual void processJoinMsg(const DtJoinMsg& msg);
428  virtual bool handleJoinFailureCases( const DtJoinMsg &msg );
429  virtual void requestFedFileUpload( const DtJoinMsg& msg );
430 
431  virtual void processJoinConfirm(const DtJoinConfirmMsg& msg);
432  virtual void processAlive(const DtAliveMsg& msg);
433  virtual void processResign(const DtResignMsg& msg);
434  virtual void processSyncPoint(const DtSyncPointMsg& msg);
435  virtual void processSyncPointQuery(const DtSyncPointQueryMsg& msg);
436  virtual void processSaveRequest(const DtSaveRequestMsg& msg);
437  virtual void processInitiatedSave(const DtInitiatedSaveMsg& msg);
438  virtual void processSaveComplete(const DtSaveCompleteMsg& msg);
439  virtual void processSaveBegun(const DtSaveBegunMsg& msg);
440  virtual void processAbortSave(const DtAbortSaveMsg& msg);
441  virtual void processRestoreRequest(const DtRestoreRequestMsg& msg);
442  virtual void processRestoreBegun(const DtRestoreBegunMsg& msg);
443  virtual void processRestoreComplete(const DtRestoreCompleteMsg& msg);
444  virtual void processAbortRestore(const DtAbortRestoreMsg& msg);
445  virtual void processOwnership(const DtOwnershipMsg& msg);
446  virtual void processReserveName(DtReserveNameMsg const& msg);
447  virtual void processReserveMultiName(DtReserveMultiNameMsg const& msg);
448  virtual void processReleaseMultiName(DtReleaseMultiNameMsg const& msg);
449  virtual void processQuerySaveStatus(DtQuerySaveStatusMsg const& msg);
450  virtual void processQueryRestoreStatus(DtQueryRestoreStatusMsg const& msg);
451 
452 #ifdef DtTIME
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);
459  virtual void processSaveTimeAdvance(const DtSaveTimeAdvanceMsg& msg);
460  virtual void processNextEventRequest(const DtNextEventRequestMsg& msg);
461 #endif
462 
464 
466  virtual void processRegisterSyncPoint(const DtSyncPointMsg& msg);
467 
469  virtual void processAchievedSyncPoint(const DtSyncPointMsg& msg);
470 
472  virtual void createSyncPoint(const DtSyncPointMsg& msg);
473 
475  virtual void processSyncPtAchievedCallbacks(DtSyncPt* point,
476  DtFederate* federate);
477 
479  virtual void processFederationSynchronizedCallbacks(DtSyncPt* point);
480 
484  virtual bool synchronized(DtSyncPt* point,
485  DtFederateHandleSet& unsuccessfulSet) const;
486 
488  virtual void sendSyncPointReport(const DtSyncPointQueryMsg& msg);
489 
491  virtual void sendSyncPointStatusReport(const DtSyncPointQueryMsg& msg);
492 
494  virtual DtFederate* addFederate(
495  const char* federateType, const char* federateName, DtFederateHandle handle,
496  unsigned long connHandle, int astntCompId, const char* fedHostName,
497  MAKRti::DtInetAddr host, DtHlaVersionId hlaVersion);
498 
501  virtual DtFederate* createFederate(
502  const char* federateType, const char* federateName,
503  DtFederateHandle handle, unsigned long connHandle, int astntCompId,
504  const char* fedHostname, MAKRti::DtInetAddr host,
505  DtHlaVersionId hlaVersion);
506 
508  virtual bool isMember(DtFederateHandle handle) const;
509 
512  virtual bool deleteFederate(DtFederateHandle handle);
513 
515 
517  virtual void readCreateFoms( DtFomClassMgr* topLvlTgt,
518  std::vector<DtString>& fomFiles, DtCreateResponseFlag& response,
519  DtString& errorResponseString, DtFedReadStatus& status,
520  MAKRti::DtFomSorter* fomSorter );
521 
523  virtual void readJoinFoms( std::vector<DtString>& fomFiles,
524  DtJoinResponseMsg::errorCodes& response, DtString& errorResponseString,
525  DtFedReadStatus& status, MAKRti::DtFomSorter* fomSorter );
526 
528  virtual bool processCreateReady();
529 
532  virtual bool processJoin(unsigned long connID, const DtFedJoinInfo* fedInfo);
533 
535  virtual void processJoinReady();
536 
538  virtual void destroyDistributor();
539 
541  virtual DtAsyncFileDistributorRunnable* distributor() const;
542 
548  virtual unsigned int numberFederatesAllowed(unsigned int numPartners) const;
549 
551  virtual void resetControl();
552 
554  virtual bool tickDistributor();
555 
557  virtual bool processEvents();
558 
559 protected:
560 
561 
562  DtFedReader * getReader(DtFomType theFomType);
563  DtFedReader * getReader( DtFomType theFomType, DtFomClassMgr* target);
564 
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 );
568 
570  virtual bool fedFileReady(const MAKRti::DtString& fileName) const;
571 
573  virtual bool fedFilesReady( const std::vector<MAKRti::DtString>* fileNames ) const;
574 
576  virtual bool addJoinFomModuleForConnection( unsigned long connId,
577  const std::vector<MAKRti::DtString>& modulesFromJoinRequest );
578 
580  virtual void removeJoinFomModuleForConnection( unsigned long connID );
581 
583 
585  virtual void tickSaveRestore();
586 
589  virtual void tickJoin();
590 
593  virtual void tickFederates();
594 
597 
598  virtual void sendSyncPointMsg(
599  DtSyncMsgType kind, int id,
600  DtSyncPointStatus status,
601  const char* name,
602  RTINAMESPACE::VariableLengthData const* theTag = NULL,
603  const DtFederateHandleSet* set = NULL,
604  const DtFederateHandleSet* unsuccessfulSet = NULL);
605 
606  virtual void sendResignMsg(
607  const char* name, DtFederateHandle fedHandle,
608  DtResignAction action, DtResignReason reason,
609  const DtTimeInfo* timeInfo );
610  virtual void sendEnableDisableNetworkTestingMsg(
611  const char* name, bool enabled );
612  virtual void sendTransferRidParamsMsg(
613  const char* name, DtFederateHandle fedHandle, const DtString& paramString);
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,
619  DtHlaVersionId hlaVers,
621  const DtString& errorString = DtString::nullString());
622  virtual void sendResignResponseMsgIfNecessary( const DtResignMsg& msg, DtResignResponse response, DtFederateHandle fedHandle );
623  virtual void sendSaveInitiateMsg(const char* labelVal);
624  virtual void sendSaveInitiateConstrainedMsg(const char* labelVal);
625  virtual void sendSaveResponse(DtFederateHandle fedHandle,
626  unsigned long requestID, const char* labelVal,
627  DtSaveResponseFlag response);
628  virtual void sendDesignatedFederate(DtFederateHandle fedHandle);
629  virtual void sendNameReservedMsg(DtFederateHandle requestingFederate,
630  char const* objectName, bool result);
631  virtual void sendMultiNameReservedMsg( DtFederateHandle requestingFederate,
632  std::set< std::wstring > const & objectNames,
633  bool result );
634 
635  virtual void sendRestoreStatus(DtFederateHandle requestingFederate,
636  RTINAMESPACE::FederateRestoreStatusVector const & restoreStatusList);
637 
638  virtual void sendSaveStatus(DtFederateHandle requestingFederate,
639  RTINAMESPACE::FederateHandleSaveStatusPairVector const & saveStatusList);
640 
641 #ifdef DtTIME
642  virtual void sendRegulationEnabledMsg(
643  DtFederateHandle handle,
644  DtRtiApiTime const & time);
645  virtual void sendConstrainedEnabledMsg(
646  DtFederateHandle handle,
647  DtRtiApiTime const & time,
648  DtRtiApiTime const & lbts);
649  virtual void sendLbtsMsg(DtFederateHandle laggardFederate,
650  DtRtiApiTime const & lbtsVal,
651  DtRtiApiTime const & lagLbtsVal);
652  virtual void sendNerLbtsMsg(
653  unsigned long nerCycle, DtFederateHandle laggardFederate,
654  bool nerPending, bool lagNerPending,
655  DtRtiApiTime const & lbtsVal,
656  DtRtiApiTime const & lagLbtsVal);
657  virtual void sendSyncConstrainedMsg();
658  virtual void sendResumeConstrainedMsg(DtFederateHandle laggardFederate,
659  DtRtiApiTime const & lbtsVal,
660  DtRtiApiTime const & lagLbtsVal);
661  virtual void sendSaveTimeMsg(char const* label,
662  DtRtiApiTime const & saveTime);
663 #endif
664 
665 
666  virtual void retireSyncPoint(const char* name);
669 
672  virtual void announceAllSyncPoints(DtFederateHandle hand);
673 
675  virtual void checkTimedSave();
676 
678  virtual void initiateSave(const char* label);
679 
682  virtual bool save( const char* label );
683 
686  virtual int initializeRestore( const char* label );
687 
690  virtual bool restore( const char* label );
691 
693  virtual void endSave(DtSaveFinishedResult result);
694 
696  virtual void endRestore(DtEndRestoreResult restoreResult);
697 
700  virtual DtString& getSaveFileName(const char* label, MAKRti::DtString& fileName,
701  bool extendName=true);
702 
705  virtual DtString& getRestoreFileName(const char* label, MAKRti::DtString& fileName);
706 
707 #ifdef DtTIME
708  virtual void resignFederateTime(DtFederateHandle federateHandle);
710 
712  void disableFederateTimeRegulation(DtFederateHandle federateHandle);
713 
715  void removeRegulatingEntry(DtTimeInfo* entry);
716 
718  virtual void checkPendingConstrained(DtRtiApiTime const & lbts);
719 
721  virtual void checkPendingConstrained(DtTimeInfo* entry,
722  DtRtiApiTime const & lbts);
723 
726  virtual bool becomeConstrained(DtTimeInfo* entry);
727 
730  void adjustRegulatingEntry(DtTimeInfo* entry,
731  DtRtiApiTime const & time,
732  DtRtiApiTimeInterval const & lookahead,
733  bool isTimeAvailable);
734 
736  void checkNerCycle(DtFederateHandle fedHandle);
737 
739  virtual void processEnableRegulation(DtFederateHandle federateHandle,
740  DtRtiApiTime const & time,
741  DtRtiApiTimeInterval const & lookahead);
742 
745  virtual void processPendingRegulation(DtFederateHandle federateHandle,
746  DtRtiApiTime const & time,
747  DtRtiApiTimeInterval const & lookahead);
748 
750  virtual DtRtiApiTime& getTempTime();
756  virtual void putTempTime(DtRtiApiTime& timePtr);
758  virtual void destroyTempTimePool();
760 
762  virtual DtFederateHandle minLbtsFederate() const;
763 
765  virtual DtRtiApiTime const & minLbts() const;
766 
768  virtual DtRtiApiTime const & lagLbts() const;
769 
772  virtual bool minTimeAvailable() const;
773 
776  virtual bool lagTimeAvailable() const;
777 
779  virtual DtFederateHandle minNerLbtsFederate() const;
780 
782  virtual DtRtiApiTime const & minNerLbts() const;
783 
785  virtual DtFederateHandle lagNerLbtsFederate() const;
786 
788  virtual DtRtiApiTime const & lagNerLbts() const;
789 
791  virtual bool minNerPending() const;
792 
794  virtual bool lagNerPending() const;
795 
797  virtual void setSaveTime(DtRtiApiTime const & timeVal);
798 
800  virtual DtRtiApiTime const & saveTime() const;
801 
803  virtual unsigned int federateHandleSlot(DtFederateHandle handle) const;
804 
806  virtual bool isFederateHandleSlotInUse(DtFederateHandle handle) const;
807 
809  virtual void setFederateHandleSlotInUse(DtFederateHandle handle, bool isInUse);
810 
811 #endif
812 
815  virtual int getNextFreeFedHandle();
816 
817 
819  DtFedExec();
820 
822  DtFedExec(const DtFedExec& orig);
823  DtFedExec& operator=(DtFedExec const& orig);
824 
825 protected:
827  unsigned int myCrcOfFedFile;
829  std::vector<bool> myFedHandlesInUse;
831  DtString myFedExName;
834  std::map< MAKRti::DtString, DtFederateHandle > myFederateHdlsByName;
837  DtString myMomModule;
838  unsigned int myMomModuleCrc;
839  std::vector<unsigned int> myCreationFedFilesCRCs;
840  MAKRti::DtFomType myFedType;
841  std::vector<DtString> myFomModules;
842  // ! This will be a Map with the keys being a FOM module name, and the value being its CRC.
843  // ! This map is populated at create and join
844  std::map<DtString, unsigned int> myFomModulesNameToCrcMap;
845  std::set<DtString> myFomModulesSet;
846  std::vector<DtString> myCreateFomModules;
847  std::map<unsigned long, std::vector<DtString>* >myJoinFomModules;
849  MAKRti::DtFomSorter* myFomSorter;
850 
854 
855  std::set< unsigned long > myConnectionsProcessJoined;
856 
858  std::map<DtFederateHandle, DtFedJoinInfo*> myJoiningFederates;
859  std::map<unsigned long, DtFedJoinInfo*> myJoiningFederatesByID;
864 
865  bool mySave;
866  bool myRestore;
867  std::set<DtFederateHandle> myPendingSaveFederates;
869  DtString mySaveLabel;
871  std::set<DtFederateHandle> myPendingRestoreFederates;
874  DtString mySavePath;
877  // When files are received from distributor, store them here until requester takes them.
878  std::map<DtString, DtFileInformation*> myTakenFiles;
879  // When FOMs are read, map FOM filename to fed target here.
880  std::map< const DtString, DtFomClassMgr > myFedexFileToFedTgtMap;
881  std::map<DtString, DtFedReadStatus> myFomToReadStatusMap;
882  // Maps source IDs to booleans, used to ensure that another FED request isn't sent by the same
883  // federate after the first successful request occurs
884  std::map<unsigned long, bool> myFedRequests;
885 
887  unsigned long myCreatorConnId;
888  std::set< unsigned long> myAwaitingJoinUpload;
890 
893 
902 
903  typedef std::set<std::string> DtFedExReservedNameSet;
904  typedef std::map< DtFederateHandle, DtFedExReservedNameSet >
908 
909 #ifdef DtTIME
910  DtLogicalTimeFactory* myLogicalTimeFactory;
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;
921  bool myNerChange;
922  bool myTransmitLaggardLBTS;
923  DtList mySyncConstrained;
924  unsigned long myNerCycle;
925  DtFederateHandle myNerFederate;
926  DtFederateHandle myLagNerFederate;
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;
932 #endif
933 
936  static const std::vector<DtString> theEmptyStringSet;
939  unsigned long myInitiatorID;
946 
947  DtClock myClock;
948 
950 
951 protected:
952 
954  //DtFedReaderFactory myFedReaderFactory;
955  DtFedReader13 * myFedReader13;
956  DtFedReader1516 * myFedReader1516;
957  DtFedReader1516e * myFedReader1516e;
958 
959 private:
960 
961  static const DtString nullStr;
963 
964 };
965 
966 
967 
968 #endif
969 
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&#39;s start-up configuration using both MTL variables and functions.
Definition: RIDparams.h:87
!DtIFSPEC1516
Definition: fedTimeFactory.h:190
Definition: syncPt.h:29
DtString myMomModule
Definition: fedex.h:837
std::map< DtString, unsigned int > myFomModulesNameToCrcMap
Definition: fedex.h:844
bool myModulesArrived
Definition: fedex.h:945
Definition: fedex.h:134
Definition: joinMsg.h:27
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
Definition: fomMgr.h:53
DtList myDisconnectCallbacks
Definition: fedex.h:896
int myFedExHandle
Definition: fedex.h:851
std::vector< FederateHandleSaveStatusPair > FederateHandleSaveStatusPairVector
Definition: Typedefs.h:65
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 -&gt; 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::vector< FederateRestoreStatus > FederateRestoreStatusVector
Definition: Typedefs.h:83
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 -&gt; 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

Document ID: Generated on Thu May 11 15:55:32 EDT 2023 from SVN revision 254743
Copyright © 2005-2020 MAK Technologies Inc. All Rights Reserved (www.mak.com)