MAK RTIspy API Documentation for HLA 1.3
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 
21 class DtRtiSaveFile;
22 class DtTimeMgr;
23 class DtConnectionMgr;
24 class DtFomClassMgr;
25 class DtRIDParameters;
26 class DtFederateMgr;
28 class DtRtiMsgQueue;
29 class DtRetractInfoList;
30 class DtRegulationEnabledMsg;
31 class DtConstrainedEnabledMsg;
32 class DtLbtsMsg;
33 class DtNerLbtsMsg;
34 class DtSyncConstrainedMsg;
35 class DtResumeConstrainedMsg;
36 class DtRetractMsg;
37 class DtSaveTimeMsg;
39 class DtInitiatedSaveMsg;
40 
46 class DT_DLL_LRC DtTimeMgr
47 {
48 public:
50  typedef DtTimeMgr* (*DtTimeMgrCreator)(DtFederateMgr* fedMgr);
51 
52 protected:
53 
55  DtTimeMgr(DtFederateMgr* fedMgr);
56 
57 public:
58 
60  virtual ~DtTimeMgr();
61 
62 private:
63 
65  DtTimeMgr(DtTimeMgr const& );
66 
68  DtTimeMgr& operator= (DtTimeMgr const& );
69 
70 public:
71 
73  virtual void preTick();
74 
76  virtual void postTick();
77 
79  virtual void postJoinInit();
80 
82  virtual bool isPostJoined() const;
83 
86  void testSaveTime(DtRtiApiTime const & timeVal);
87 
89  bool validTsoSendTime(DtRtiApiTime const & timeVal);
90 
92  bool validRetractTime(DtRtiApiTime const & timeVal);
93 
96  virtual void setTime(DtRtiApiTime const & theTime);
97  virtual DtRtiApiTime const & time() const;
98 
100  virtual void setLookahead(DtRtiApiTimeInterval const & theInterval);
101  virtual DtRtiApiTimeInterval const & lookahead() const;
102 
104  virtual void setLits(DtRtiApiTime const & theTime);
105  virtual DtRtiApiTime const & lits() const;
106  virtual DtRtiApiTime const & lots() const;
107 
109  virtual bool galtIsValid() const;
110 
112  virtual void setGalt(DtRtiApiTime const & theTime);
113  virtual DtRtiApiTime const & galt() const;
114 
116  virtual void setRequestedTime(DtRtiApiTime const & theTime);
117  virtual DtRtiApiTime const & requestedTime() const;
118 
120  virtual void setRequestedLookahead(
121  DtRtiApiTimeInterval const & theInterval);
122  virtual DtRtiApiTimeInterval const & requestedLookahead() const;
123 
128  virtual void setWorkingLookahead(DtRtiApiTimeInterval const & theInterval);
129  virtual DtRtiApiTimeInterval const & workingLookahead() const;
130 
132  virtual void setPendingGrant(DtRtiApiTime const & theTime);
133  virtual DtRtiApiTime const & pendingGrant() const;
134 
136  virtual void setEventTime(DtRtiApiTime const & theTime);
137  virtual DtRtiApiTime const & eventTime() const;
138 
141  virtual bool getSaveTime(DtRtiApiTime & saveTimeValue ) const;
142  virtual void setSaveTime(DtRtiApiTime const & time);
143 
145  virtual void resetSaveTime(bool completedSuccessfully);
146 
149  virtual bool getLastSaveTime(DtRtiApiTime & saveTime ) const;
150  virtual void setLastSaveTime(DtRtiApiTime const & time);
151 
152 
155 
156 
158 #if defined(DtIFSPEC1516) || defined(DtIFSPEC1516E)
159  virtual void enableTimeRegulation(DtRtiApiTimeInterval const & theLookahead);
160 #else
161  virtual void enableTimeRegulation(
162  DtRtiApiTime const & theFederateTime,
163  DtRtiApiTimeInterval const & theLookahead);
164 #endif
165 
167  virtual void disableTimeRegulation();
168 
170  virtual void enableTimeConstrained();
171 
173  virtual void disableTimeConstrained();
174 
176  virtual void timeAdvanceRequest(DtRtiApiTime const & theTime);
177 
179  virtual void timeAdvanceRequestAvailable(DtRtiApiTime const & theTime);
180 
182  virtual void nextEventRequest(DtRtiApiTime const & theTime);
183 
185  virtual void nextEventRequestAvailable(DtRtiApiTime const & theTime);
186 
188  virtual void flushQueueRequest(DtRtiApiTime const & theTime);
189 
191  virtual void enableAsynchronousDelivery();
192 
194  virtual void disableAsynchronousDelivery();
195 
197  virtual bool queryLBTS(DtRtiApiTime& theTime,
198  bool testForExceptions=true);
199 
201  virtual bool queryFederateTime(DtRtiApiTime& theTime,
202  bool testForExceptions=true);
203 
205  virtual bool queryMinNextEventTime(DtRtiApiTime& theTime,
206  bool testForExceptions=true);
207 
209  virtual void modifyLookahead(DtRtiApiTimeInterval const & theLookahead);
210 
212  virtual bool queryLookahead (
213  DtRtiApiTimeInterval& theInterval,
214  bool testForExceptions=true);
215 
217  virtual void retract (
218  DtMessageRetractionHandle theHandle);
220 
222  virtual bool save(DtRtiSaveFile& file);
223 
225  virtual void prepareToRestore();
226 
228  virtual bool restore( DtRtiSaveFile& file );
229 
231  virtual void saveFinished();
232 
235  virtual void postSaveFinished();
236 
238  virtual void processSaveInitiate();
239 
241  virtual bool timeAdvancing() const;
242 
244  virtual DtFederateMgr* federateMgr();
245  virtual DtFederateMgr* federateMgr() const;
246 
248  virtual DtConnectionMgr* connectMgr();
249  virtual DtConnectionMgr* connectMgr() const;
250 
252  virtual DtRIDParameters* params();
253  virtual DtRIDParameters* params() const;
254 
256  virtual DtFomClassMgr* fom();
257  virtual DtFomClassMgr* fom() const;
258 
260  virtual unsigned long nextSerialNumber();
261 
263  virtual bool isTimeRegulating() const;
264  virtual bool isTimeConstrained() const;
265 
267  virtual bool tsoEventWasServiced() const;
268  virtual void setTsoEventWasServiced(bool eventServiced);
269 
271  virtual bool timeAvailable() const;
272  virtual void setTimeAvailable(bool isTimeAvailable);
273 
274 public:
275 
279  static DtTimeMgr* create(DtFederateMgr* fedMgr);
280 
283  static void setCreatorFunction(DtTimeMgrCreator creator);
284 
285 protected:
286 
289 
290 
292  virtual void sendEnableTimeRegulationMsg(DtRtiApiTime const & theTime,
293  DtRtiApiTimeInterval const & theLookahead);
294 
296  virtual void sendEnableTimeConstrainedMsg(DtRtiApiTime const & theTime,
297  DtRtiApiTimeInterval const & theLookahead);
298 
300  virtual void sendTimeAdvanceRequestMsg(DtRtiApiTime const & theTime,
301  DtRtiApiTimeInterval const & theLookahead);
302 
304  virtual void sendConstrainedSyncMsg(DtRtiApiTime const & theTime,
305  DtRtiApiTimeInterval const & theLookahead);
306 
308  virtual void sendNextEventRequestMsg(DtRtiApiTime const & nerTime,
309  DtRtiApiTimeInterval const & nerLookahead, bool isTimeAvailable,
310  unsigned long nerCycle);
311 
313  virtual void sendDisableMsg(DtTimeServiceType type);
314 
316  virtual void sendRetractMsg(const unsigned long serialNumberVal);
317 
319  virtual void sendSaveTimeAdvanceMsg();
320 
322  virtual void sendInitiatedSaveMsg();
324 
325 
330  virtual bool advanceTime(DtRtiApiTime const & newTime);
331 
333  virtual void invokeGrant(DtRtiApiTime const & newTime);
334 
336  virtual void setTimeAdvancing(bool isAdvancing);
337 
342  virtual void adjustZeroLookahead(bool forceAdjust=false);
343 
347  virtual void resetZeroLookahead();
348 
353  void reduceLookahead(DtRtiApiTime const & requestTime);
354 
356  void commitLookaheadModifcation();
357 
359  virtual bool canGrantImmediately(DtRtiApiTime const & theTime);
360 
362  virtual bool timeForSave(DtRtiApiTime const & requestTime);
363 
366  bool canGrantImmediately(DtRtiApiTime const & timeVal,
367  DtRtiApiTime const & galtVal);
368 
371  bool canDeliverImmediately(DtRtiApiTime const & timeVal,
372  DtRtiApiTime const & galtVal);
373 
375  virtual void checkGalt(bool sendLbtsMsg);
376 
378  virtual void checkTimedSave();
379 
384  virtual bool checkMsgQueue(DtRtiApiTime const & timeUpperBound,
385  DtRtiApiTime & minimumTimestamp);
386 
390 
391  virtual bool checkMsgQueue(DtRtiApiTime const & timeUpperBound);
392 
399  virtual void processNextTsoEvents(
400  DtRtiApiTime const & timeUpperBound, DtRtiApiTime& msgTime,
401  DtRtiApiTime const & galtVal);
402 
405  virtual void flushMsgQueue(DtRtiApiTime const & requestTime);
406 
408  virtual void checkTimeAdvanceRequest();
409 
410 
415  virtual void checkNextEventRequest(DtRtiApiTime const & galtVal,
416  bool sendNerMsg);
417 
421 
422 
424  virtual void processRegulationEnabled(const DtRegulationEnabledMsg& msg);
425 
427  virtual void processConstrainedEnabled(const DtConstrainedEnabledMsg& msg);
428 
430  virtual void processLbts(const DtLbtsMsg& msg);
431 
433  virtual void processNerLbts(const DtNerLbtsMsg& msg);
434 
436  virtual void processSyncConstrained(const DtSyncConstrainedMsg& msg);
437 
439  virtual void processResumeConstrained(const DtResumeConstrainedMsg& msg);
440 
442  virtual void processRetract(const DtRetractMsg& msg);
443 
445  virtual void processSaveTime(const DtSaveTimeMsg& msg);
446 
448  virtual void processSaveInitiateConstrained(const DtSaveInitiateConstrainedMsg& msg);
450 
453  void processLbts(DtFederateHandle laggardFederate,
454  DtRtiApiTime const & lbts, DtRtiApiTime const & lagLbts);
455 
457  virtual int sizeNeededForVariant();
458 
462  virtual DtRtiApiTime& getTempTime();
463  virtual void putTempTime(DtRtiApiTime& timePtr);
464 
466  virtual void destroyTempTimePool();
467 
468 protected:
469 
473 
474 
476  static void processRegulationEnabled(const DtRegulationEnabledMsg& msg, void* usr);
477 
479  static void processConstrainedEnabled(const DtConstrainedEnabledMsg& msg, void* usr);
480 
482  static void processLbts(const DtLbtsMsg& msg, void* usr);
483 
485  static void processNerLbts(const DtNerLbtsMsg& msg, void* usr);
486 
488  static void processSyncConstrained(const DtSyncConstrainedMsg& msg, void* usr);
489 
491  static void processResumeConstrained(const DtResumeConstrainedMsg& msg, void* usr);
492 
494  static void processRetract(const DtRetractMsg& msg, void* usr);
495 
497  static void processSaveTime(const DtSaveTimeMsg& msg, void* usr);
498 
500  static void processSaveInitiateConstrained(const DtSaveInitiateConstrainedMsg& msg, void* usr);
502 
503 protected:
504 
506  DtFederateMgr* myFederateMgr;
507 
509  bool myIsJoined;
510 
512  DtRtiMsgQueue* myMsgQueue;
513 
515  DtLogicalTimeFactory* myLogicalTimeFactory;
516 
518  bool myGaltIsValid;
519 
521  bool myLastSaveTimeIsValid;
522 
525 
526 
528  std::auto_ptr <DtRtiApiTime> myLits;
529 
531  std::auto_ptr <DtRtiApiTime> myLots;
532 
534  std::auto_ptr <DtRtiApiTime> myGalt;
535 
537  std::auto_ptr <DtRtiApiTime> myFederateTime;
538 
540  std::auto_ptr <DtRtiApiTimeInterval> myLookahead;
541 
543  std::auto_ptr <DtRtiApiTime> myRequestedTime;
544 
546  std::auto_ptr <DtRtiApiTimeInterval> myRequestedLookahead;
547 
550  std::auto_ptr <DtRtiApiTime> myEventTime;
551 
554  std::auto_ptr <DtRtiApiTimeInterval> myWorkingLookahead;
555 
568  std::auto_ptr <DtRtiApiTime> myPendingGrantTime;
569 
571  std::auto_ptr <DtRtiApiTime> mySaveTime;
572 
574  std::auto_ptr <DtRtiApiTime> myLastSaveTime;
576 
577  bool myEventWasDelivered;
578 
579  bool myIncludeEventTime;
580 
583  unsigned long myNerCycle;
584 
586  bool myPendingGrant;
587 
589  bool myInterruptedNextEvent;
590 
592 
593  bool myTimeConstrainedEnabled;
594  bool myTimeRegulatingEnabled;
595  bool myEnableTimeRegulationPending;
596  bool myEnableTimeConstrainedPending;
597  bool myPendingConstrainedSync;
599 
601 
602  bool myCheckGalt;
603  bool myRequestingTimeAdvance;
604  bool myRequestingNextEvent;
605  bool myFlushQueue;
606  bool myAdvancingTime;
607  bool myTsoEventWasServiced;
609 
611 
612  bool myTimeAvailable;
613  bool myAdjustedLookahead;
614  bool myAdjustedWorkingLookahead;
615  bool myModifyingLookahead;
616  bool myNeraRemovedLookaheadAdjustment;
617  bool myAdvanceWillReduceLookahead;
619 
621 
622  bool mySaveTimePending;
623  bool mySaveTimeAdvancedPending;
624  bool mySavePending;
625  bool mySaveTimeIsReady;
626  bool myPostSavePending;
627  bool myPostSaveTimePending;
628  bool myInitateSaveReady;
630 
632  MAKRti::DtString mySaveTimeLabel;
633 
635  unsigned long mySerialNumber;
636 
638  DtRetractInfoList* myRetractList;
639 
641  MAKRti::DtList myTempTimePool;
642 
643 protected:
644 
646  static DtTimeMgrCreator theCreator;
647 };
648 
649 #endif
650 #endif
651 
652 
653 
654 

Document ID: Generated on Tue May 7 16:26:47 EDT 2013 from SVN revision 126903
Copyright © 2005-2013 VT MÄK Inc. All Rights Reserved (www.mak.com)