MAK RTIspy API Documentation for HLA 1516
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
timeMgr.h
Go to the documentation of this file.
1 /*********************************************************************
2 ** Copyright (c) 1998 MaK Technologies, Inc.
3 ** All rights reserved.
4 *********************************************************************/
5 /*********************************************************************
6 ** $RCSfile: timeMgr.h,v $ $Revision: 1.59 $ $State: Exp $
7 *********************************************************************/
8 
9 #ifndef timeMgr_H_
10 #define timeMgr_H_
11 #ifdef DtTIME
12 
15 
16 #include "rtiApiTypes.h"
17 #include <vlutil/vlFedTarget.h>
18 #include <vlutil/vlList.h>
19 #include "disableMsg.h"
20 #include <queue>
21 
22 class DtRtiSaveFile;
23 class DtTimeMgr;
24 class DtConnectionMgr;
25 class DtFomClassMgr;
26 class DtRIDParameters;
27 class DtFederateMgr;
29 class DtRtiMsgQueue;
30 class DtRetractInfoList;
31 class DtRegulationEnabledMsg;
32 class DtConstrainedEnabledMsg;
33 class DtLbtsMsg;
34 class DtNerLbtsMsg;
35 class DtSyncConstrainedMsg;
36 class DtResumeConstrainedMsg;
37 class DtRetractMsg;
38 class DtSaveTimeMsg;
40 class DtInitiatedSaveMsg;
41 
47 class DT_DLL_LRC DtTimeMgr
48 {
49 public:
51  typedef DtTimeMgr* (*DtTimeMgrCreator)(DtFederateMgr* fedMgr);
52 
53 protected:
54 
56  DtTimeMgr(DtFederateMgr* fedMgr);
57 
58 public:
59 
61  virtual ~DtTimeMgr();
62 
63 private:
64 
66  DtTimeMgr(DtTimeMgr const& );
67 
69  DtTimeMgr& operator= (DtTimeMgr const& );
70 
71 public:
72 
74  virtual void preTick();
75 
77  virtual void postTick();
78 
80  virtual void postJoinInit();
81 
83  virtual bool isPostJoined() const;
84 
87  void testSaveTime(DtRtiApiTime const & timeVal);
88 
90  bool validTsoSendTime(DtRtiApiTime const & timeVal);
91 
93  bool validRetractTime(DtRtiApiTime const & timeVal);
94 
97  virtual void setTime(DtRtiApiTime const & theTime);
98  virtual DtRtiApiTime const & time() const;
99 
101  virtual void setLookahead(DtRtiApiTimeInterval const & theInterval);
102  virtual DtRtiApiTimeInterval const & lookahead() const;
103 
105  virtual void setLits(DtRtiApiTime const & theTime);
106  virtual DtRtiApiTime const & lits() const;
107  virtual DtRtiApiTime const & lots() const;
108 
110  virtual bool galtIsValid() const;
111 
113  virtual void setGalt(DtRtiApiTime const & theTime);
114  virtual DtRtiApiTime const & galt() const;
115 
117  virtual void setFederationLbts(DtRtiApiTime const & theTime);
118  virtual DtRtiApiTime const & federationLbts() const;
119 
121  virtual void setRequestedTime(DtRtiApiTime const & theTime);
122  virtual DtRtiApiTime const & requestedTime() const;
123 
125  virtual void setRequestedLookahead(
126  DtRtiApiTimeInterval const & theInterval);
127  virtual DtRtiApiTimeInterval const & requestedLookahead() const;
128 
133  virtual void setWorkingLookahead(DtRtiApiTimeInterval const & theInterval);
134  virtual DtRtiApiTimeInterval const & workingLookahead() const;
135 
137  virtual void setPendingGrant(DtRtiApiTime const & theTime);
138  virtual DtRtiApiTime const & pendingGrant() const;
139 
141  virtual void setEventTime(DtRtiApiTime const & theTime);
142  virtual DtRtiApiTime const & eventTime() const;
143 
146  virtual bool getSaveTime(DtRtiApiTime & saveTimeValue ) const;
147  virtual void setSaveTime(DtRtiApiTime const & time);
148 
150  virtual void resetSaveTime(bool completedSuccessfully);
151 
154  virtual bool getLastSaveTime(DtRtiApiTime & saveTime ) const;
155  virtual void setLastSaveTime(DtRtiApiTime const & time);
156 
157 
160 
161 
163 #if defined(DtIFSPEC1516) || defined(DtIFSPEC1516E) || defined(DtIFSPEC1516_2025)
164  virtual void enableTimeRegulation(DtRtiApiTimeInterval const & theLookahead);
165 #else
166  virtual void enableTimeRegulation(
167  DtRtiApiTime const & theFederateTime,
168  DtRtiApiTimeInterval const & theLookahead);
169 #endif
170 
172  virtual void disableTimeRegulation();
173 
175  virtual void enableTimeConstrained();
176 
178  virtual void disableTimeConstrained();
179 
181  virtual void timeAdvanceRequest(DtRtiApiTime const & theTime);
182 
184  virtual void timeAdvanceRequestAvailable(DtRtiApiTime const & theTime);
185 
187  virtual void nextEventRequest(DtRtiApiTime const & theTime);
188 
190  virtual void nextEventRequestAvailable(DtRtiApiTime const & theTime);
191 
193  virtual void flushQueueRequest(DtRtiApiTime const & theTime);
194 
196  virtual void enableAsynchronousDelivery();
197 
199  virtual void disableAsynchronousDelivery();
200 
202  virtual bool queryLBTS(DtRtiApiTime& theTime, bool testForExceptions=true) const;
203 
205  virtual bool queryFederateTime(DtRtiApiTime& theTime, bool testForExceptions=true) const;
206 
208  virtual bool queryMinNextEventTime(DtRtiApiTime& theTime, bool testForExceptions=true) const;
209 
211  virtual void modifyLookahead(DtRtiApiTimeInterval const & theLookahead);
212 
214  virtual bool queryLookahead(DtRtiApiTimeInterval& theInterval, bool testForExceptions=true) const;
215 
217  virtual void retract(DtMessageRetractionHandle theHandle);
219 
221  virtual bool save(DtRtiSaveFile& file);
222 
224  virtual void prepareToRestore();
225 
227  virtual bool restore( DtRtiSaveFile& file );
228 
230  virtual void saveFinished();
231 
234  virtual void postSaveFinished();
235 
237  virtual void processSaveInitiate();
238 
240  virtual bool timeAdvancing() const;
241 
243  virtual DtFederateMgr* federateMgr();
244  virtual DtFederateMgr* federateMgr() const;
245 
247  virtual DtConnectionMgr* connectMgr();
248  virtual DtConnectionMgr* connectMgr() const;
249 
251  virtual DtRIDParameters* params();
252  virtual DtRIDParameters* params() const;
253 
255  virtual DtFomClassMgr* fom();
256  virtual DtFomClassMgr* fom() const;
257 
259  virtual unsigned long nextSerialNumber();
260 
262  virtual bool isTimeRegulating() const;
263  virtual bool isTimeConstrained() const;
264 
266  virtual bool tsoEventWasServiced() const;
267  virtual void setTsoEventWasServiced(bool eventServiced);
268 
270  virtual bool timeAvailable() const;
271 
272 public:
273 
277  static DtTimeMgr* create(DtFederateMgr* fedMgr);
278 
281  static void setCreatorFunction(DtTimeMgrCreator creator);
282 
283 protected:
284 
285  // Time advancing state relies on the state of 2 variables
286  // but to support save/restore backwards compatibility they are merged into one enum
287  enum DtTimeAvailableState
288  {
289  // The old state values
290  DtTimeNotAvailable = 0,
291  DtTimeAvailable,
292  // The new state values
293  DtTimeNotAvailableAndNotAdvancingAvailable,
294  DtTimeNotAvailableAndAdvancingAvailable,
295  DtTimeAvailableAndNotAdvancingAvailable,
296  DtTimeAvailableAndAdvancingAvailable
297  };
298 
301 
302 
304  virtual void sendEnableTimeRegulationMsg(DtRtiApiTime const & theTime,
305  DtRtiApiTimeInterval const & theLookahead);
306 
308  virtual void sendEnableTimeConstrainedMsg(DtRtiApiTime const & theTime,
309  DtRtiApiTimeInterval const & theLookahead);
310 
312  virtual void sendTimeAdvanceRequestMsg(DtRtiApiTime const & theTime,
313  DtRtiApiTimeInterval const & theLookahead);
314 
316  virtual void sendConstrainedSyncMsg(DtRtiApiTime const & theTime,
317  DtRtiApiTimeInterval const & theLookahead);
318 
320  virtual void sendNextEventRequestMsg(DtRtiApiTime const & nerTime,
321  DtRtiApiTimeInterval const & nerLookahead, bool isWaitingForEvent, bool isTimeAvailable,
322  unsigned long nerCycle);
323 
325  virtual void sendDisableMsg(DtTimeServiceType type);
326 
328  virtual void sendRetractMsg(const unsigned long serialNumberVal);
329 
331  virtual void sendSaveTimeAdvanceMsg();
332 
334  virtual void sendInitiatedSaveMsg();
336 
337 
342  virtual bool advanceTime(DtRtiApiTime const & newTime);
343 
345  virtual void invokeGrant(DtRtiApiTime const & newTime);
346 
348  virtual void setTimeAdvancing(bool isAdvancing);
349 
351  virtual void setTimeAvailableState(DtTimeAvailableState timeAvailableState);
352 
354  virtual DtTimeAvailableState timeAvailableState() const;
355 
360  virtual void adjustZeroLookahead(bool forceAdjust=false);
361 
365  virtual void resetZeroLookahead();
366 
371  void reduceLookahead(DtRtiApiTime const & requestTime);
372 
374  void commitLookaheadModifcation();
375 
377  virtual bool canGrantImmediately(DtRtiApiTime const & theTime);
378 
380  virtual bool timeForSave(DtRtiApiTime const & requestTime);
381 
384  bool canGrantImmediately(DtRtiApiTime const & timeVal,
385  DtRtiApiTime const & galtVal);
386 
389  bool canDeliverImmediately(DtRtiApiTime const & timeVal,
390  DtRtiApiTime const & galtVal);
391 
393  virtual void checkGalt(bool sendLbtsMsg);
394 
396  virtual void checkTimedSave();
397 
402  virtual bool checkMsgQueue(DtRtiApiTime const & timeUpperBound,
403  DtRtiApiTime & minimumTimestamp);
404 
408 
409  virtual bool checkMsgQueue(DtRtiApiTime const & timeUpperBound);
410 
417  virtual void processNextTsoEvents(
418  DtRtiApiTime const & timeUpperBound, DtRtiApiTime& msgTime,
419  DtRtiApiTime const & galtVal);
420 
423  virtual void flushMsgQueue(DtRtiApiTime const & requestTime);
424 
426  virtual void checkTimeAdvanceRequest();
427 
428 
430  virtual void checkNextEventRequest();
431 
433  virtual void sendNerMessage();
434 
438 
439 
441  virtual void processRegulationEnabled(const DtRegulationEnabledMsg& msg);
442 
444  virtual void processConstrainedEnabled(const DtConstrainedEnabledMsg& msg);
445 
447  virtual void processLbts(const DtLbtsMsg& msg);
448 
450  virtual void processNerLbts(const DtNerLbtsMsg& msg);
451 
453  virtual void processSyncConstrained(const DtSyncConstrainedMsg& msg);
454 
456  virtual void processResumeConstrained(const DtResumeConstrainedMsg& msg);
457 
459  virtual void processRetract(const DtRetractMsg& msg);
460 
462  virtual void processSaveTime(const DtSaveTimeMsg& msg);
463 
465  virtual void processSaveInitiateConstrained(const DtSaveInitiateConstrainedMsg& msg);
467 
470  void processLbts(DtFederateHandle laggardFederate,
471  DtRtiApiTime const & lbts, DtRtiApiTime const & lagLbts, bool nerlbts);
472 
474  virtual int sizeNeededForVariant();
475 
479  virtual DtRtiApiTime& getTempTime() const;
480  virtual void putTempTime(DtRtiApiTime& timePtr) const;
481 
483  virtual void destroyTempTimePool();
484 
485 protected:
486 
490 
491 
493  static void processRegulationEnabled(const DtRegulationEnabledMsg& msg, void* usr);
494 
496  static void processConstrainedEnabled(const DtConstrainedEnabledMsg& msg, void* usr);
497 
499  static void processLbts(const DtLbtsMsg& msg, void* usr);
500 
502  static void processNerLbts(const DtNerLbtsMsg& msg, void* usr);
503 
505  static void processSyncConstrained(const DtSyncConstrainedMsg& msg, void* usr);
506 
508  static void processResumeConstrained(const DtResumeConstrainedMsg& msg, void* usr);
509 
511  static void processRetract(const DtRetractMsg& msg, void* usr);
512 
514  static void processSaveTime(const DtSaveTimeMsg& msg, void* usr);
515 
517  static void processSaveInitiateConstrained(const DtSaveInitiateConstrainedMsg& msg, void* usr);
519 
520 protected:
521 
523  DtFederateMgr* myFederateMgr;
524 
526  bool myIsJoined;
527 
529  DtRtiMsgQueue* myMsgQueue;
530 
532  DtLogicalTimeFactory* myLogicalTimeFactory;
533 
535  bool myGaltIsValid;
536 
538  bool myLastSaveTimeIsValid;
539 
542 
543 
545  DtRtiApiUniquePtr<DtRtiApiTime> myLits;
546 
548  DtRtiApiUniquePtr<DtRtiApiTime> myLots;
549 
551  DtRtiApiUniquePtr<DtRtiApiTime> myGalt;
552  bool myLbtsIsFromNer;
553 
555  DtRtiApiUniquePtr<DtRtiApiTime> myFederationLbts;
556 
558  DtRtiApiUniquePtr<DtRtiApiTime> myFederateTime;
559 
561  DtRtiApiUniquePtr<DtRtiApiTimeInterval> myLookahead;
562 
564  DtRtiApiUniquePtr<DtRtiApiTime> myRequestedTime;
565 
567  DtRtiApiUniquePtr<DtRtiApiTimeInterval> myRequestedLookahead;
568 
571  DtRtiApiUniquePtr<DtRtiApiTime> myEventTime;
572 
575  DtRtiApiUniquePtr<DtRtiApiTimeInterval> myWorkingLookahead;
576 
589  DtRtiApiUniquePtr<DtRtiApiTime> myPendingGrantTime;
590 
592  DtRtiApiUniquePtr<DtRtiApiTime> mySaveTime;
593 
595  DtRtiApiUniquePtr<DtRtiApiTime> myLastSaveTime;
597 
599  bool myEventWasDelivered;
600 
602  bool myIncludeEventTime;
603 
606  unsigned long myNerCycle;
607 
609  bool myPendingGrant;
610 
612  bool myInterruptedNextEvent;
613 
615  bool myTimeConstrainedEnabled;
617  bool myTimeRegulatingEnabled;
618  bool myEnableTimeRegulationPending;
619  bool myEnableTimeConstrainedPending;
620  bool myPendingConstrainedSync;
622 
624  bool myCheckGalt;
626  bool myRequestingTimeAdvance;
627  bool myRequestingNextEvent;
628  bool myFlushQueue;
629  bool myAdvancingTime;
630  bool myTsoEventWasServiced;
632 
634  DtTimeAvailableState myTimeAvailableState;
636  bool myAdjustedLookahead;
637  bool myAdjustedWorkingLookahead;
638  bool myModifyingLookahead;
639  bool myNeraRemovedLookaheadAdjustment;
640  bool myAdvanceWillReduceLookahead;
642 
644  bool mySaveTimePending;
646  bool mySaveTimeAdvancedPending;
647  bool mySavePending;
648  bool mySaveTimeIsReady;
649  bool myPostSavePending;
650  bool myPostSaveTimePending;
651  bool myInitateSaveReady;
653 
655  MAKRti::DtString mySaveTimeLabel;
656 
658  unsigned long mySerialNumber;
659 
661  DtRetractInfoList* myRetractList;
662 
664  mutable std::queue<DtRtiApiTime*> myTempTimePool;
665  // MAKRti::DtList myTempTimePool;
666 
667 protected:
668 
670  static DtTimeMgrCreator theCreator;
671 };
672 
673 #endif
674 #endif
675 
676 
677 
678 
Sorted list for queueing messages in time stamped order.
Definition: msgQueue.h:71
Definition: saveInitConstrainedMsg.h:23
This class manages the RTI&#39;s start-up configuration using both MTL variables and functions.
Definition: RIDparams.h:87
Definition: fedTimeFactory.h:73
Definition: saveTimeMsg.h:21
RTI_API::LogicalTime DtRtiApiTime
Typedefs for RTI API types that frequently require conditional precompile directives.
Definition: rtiApiTypes.h:91
Instances of DtFederateMgr process federation-level messages (such as create, destroy, join, resign, and sync points) and manages the objects responsible for handling general communication, objects, interactions, the FOM, MOM, and data distribution mmg.
Definition: fedMgr.h:93
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: fomMgr.h:49
Definition: initiatedSaveMsg.h:21
Definition: internalTypes.h:84
#define DT_DLL_LRC
Definition: rtiMsConfig.h:155
RTI_API::LogicalTimeInterval DtRtiApiTimeInterval
Definition: rtiApiTypes.h:92
Definition: saveFile.h:21
Definition: retractList.h:91

Document ID: Generated on Wed Jul 8 16:20:32 EDT 2026 from SVN revision 291616
Copyright © 2005-2025 MAK Technologies Inc. All Rights Reserved (www.mak.com)