17 #include <vlutil/vlFedTarget.h>
18 #include <vlutil/vlList.h>
31 class DtRegulationEnabledMsg;
32 class DtConstrainedEnabledMsg;
35 class DtSyncConstrainedMsg;
36 class DtResumeConstrainedMsg;
51 typedef DtTimeMgr* (*DtTimeMgrCreator)(
DtFederateMgr* fedMgr);
66 DtTimeMgr(DtTimeMgr
const& );
69 DtTimeMgr& operator= (DtTimeMgr
const& );
74 virtual void preTick();
77 virtual void postTick();
80 virtual void postJoinInit();
83 virtual bool isPostJoined()
const;
110 virtual bool galtIsValid()
const;
117 virtual void setFederationLbts(
DtRtiApiTime const & theTime);
121 virtual void setRequestedTime(
DtRtiApiTime const & theTime);
125 virtual void setRequestedLookahead(
137 virtual void setPendingGrant(
DtRtiApiTime const & theTime);
141 virtual void setEventTime(
DtRtiApiTime const & theTime);
146 virtual bool getSaveTime(
DtRtiApiTime & saveTimeValue )
const;
150 virtual void resetSaveTime(
bool completedSuccessfully);
154 virtual bool getLastSaveTime(
DtRtiApiTime & saveTime )
const;
155 virtual void setLastSaveTime(
DtRtiApiTime const & time);
163 #if defined(DtIFSPEC1516) || defined(DtIFSPEC1516E) || defined(DtIFSPEC1516_2025)
166 virtual void enableTimeRegulation(
172 virtual void disableTimeRegulation();
175 virtual void enableTimeConstrained();
178 virtual void disableTimeConstrained();
181 virtual void timeAdvanceRequest(
DtRtiApiTime const & theTime);
184 virtual void timeAdvanceRequestAvailable(
DtRtiApiTime const & theTime);
187 virtual void nextEventRequest(
DtRtiApiTime const & theTime);
190 virtual void nextEventRequestAvailable(
DtRtiApiTime const & theTime);
193 virtual void flushQueueRequest(
DtRtiApiTime const & theTime);
196 virtual void enableAsynchronousDelivery();
199 virtual void disableAsynchronousDelivery();
202 virtual bool queryLBTS(
DtRtiApiTime& theTime,
bool testForExceptions=
true)
const;
205 virtual bool queryFederateTime(
DtRtiApiTime& theTime,
bool testForExceptions=
true)
const;
208 virtual bool queryMinNextEventTime(
DtRtiApiTime& theTime,
bool testForExceptions=
true)
const;
214 virtual bool queryLookahead(
DtRtiApiTimeInterval& theInterval,
bool testForExceptions=
true)
const;
224 virtual void prepareToRestore();
230 virtual void saveFinished();
234 virtual void postSaveFinished();
237 virtual void processSaveInitiate();
240 virtual bool timeAdvancing()
const;
259 virtual unsigned long nextSerialNumber();
262 virtual bool isTimeRegulating()
const;
263 virtual bool isTimeConstrained()
const;
266 virtual bool tsoEventWasServiced()
const;
267 virtual void setTsoEventWasServiced(
bool eventServiced);
270 virtual bool timeAvailable()
const;
281 static void setCreatorFunction(DtTimeMgrCreator creator);
287 enum DtTimeAvailableState
290 DtTimeNotAvailable = 0,
293 DtTimeNotAvailableAndNotAdvancingAvailable,
294 DtTimeNotAvailableAndAdvancingAvailable,
295 DtTimeAvailableAndNotAdvancingAvailable,
296 DtTimeAvailableAndAdvancingAvailable
304 virtual void sendEnableTimeRegulationMsg(
DtRtiApiTime const & theTime,
308 virtual void sendEnableTimeConstrainedMsg(
DtRtiApiTime const & theTime,
312 virtual void sendTimeAdvanceRequestMsg(
DtRtiApiTime const & theTime,
316 virtual void sendConstrainedSyncMsg(
DtRtiApiTime const & theTime,
320 virtual void sendNextEventRequestMsg(
DtRtiApiTime const & nerTime,
322 unsigned long nerCycle);
325 virtual void sendDisableMsg(DtTimeServiceType type);
328 virtual void sendRetractMsg(
const unsigned long serialNumberVal);
331 virtual void sendSaveTimeAdvanceMsg();
334 virtual void sendInitiatedSaveMsg();
348 virtual void setTimeAdvancing(
bool isAdvancing);
351 virtual void setTimeAvailableState(DtTimeAvailableState timeAvailableState);
354 virtual DtTimeAvailableState timeAvailableState()
const;
360 virtual void adjustZeroLookahead(
bool forceAdjust=
false);
365 virtual void resetZeroLookahead();
374 void commitLookaheadModifcation();
377 virtual bool canGrantImmediately(
DtRtiApiTime const & theTime);
380 virtual bool timeForSave(
DtRtiApiTime const & requestTime);
389 bool canDeliverImmediately(
DtRtiApiTime const & timeVal,
393 virtual void checkGalt(
bool sendLbtsMsg);
396 virtual void checkTimedSave();
402 virtual bool checkMsgQueue(
DtRtiApiTime const & timeUpperBound,
409 virtual bool checkMsgQueue(
DtRtiApiTime const & timeUpperBound);
417 virtual void processNextTsoEvents(
423 virtual void flushMsgQueue(
DtRtiApiTime const & requestTime);
426 virtual void checkTimeAdvanceRequest();
430 virtual void checkNextEventRequest();
433 virtual void sendNerMessage();
441 virtual void processRegulationEnabled(
const DtRegulationEnabledMsg& msg);
444 virtual void processConstrainedEnabled(
const DtConstrainedEnabledMsg& msg);
447 virtual void processLbts(
const DtLbtsMsg& msg);
450 virtual void processNerLbts(
const DtNerLbtsMsg& msg);
453 virtual void processSyncConstrained(
const DtSyncConstrainedMsg& msg);
456 virtual void processResumeConstrained(
const DtResumeConstrainedMsg& msg);
459 virtual void processRetract(
const DtRetractMsg& msg);
474 virtual int sizeNeededForVariant();
483 virtual void destroyTempTimePool();
493 static void processRegulationEnabled(
const DtRegulationEnabledMsg& msg,
void* usr);
496 static void processConstrainedEnabled(
const DtConstrainedEnabledMsg& msg,
void* usr);
499 static void processLbts(
const DtLbtsMsg& msg,
void* usr);
502 static void processNerLbts(
const DtNerLbtsMsg& msg,
void* usr);
505 static void processSyncConstrained(
const DtSyncConstrainedMsg& msg,
void* usr);
508 static void processResumeConstrained(
const DtResumeConstrainedMsg& msg,
void* usr);
511 static void processRetract(
const DtRetractMsg& msg,
void* usr);
514 static void processSaveTime(
const DtSaveTimeMsg& msg,
void* usr);
538 bool myLastSaveTimeIsValid;
545 DtRtiApiUniquePtr<DtRtiApiTime> myLits;
548 DtRtiApiUniquePtr<DtRtiApiTime> myLots;
551 DtRtiApiUniquePtr<DtRtiApiTime> myGalt;
552 bool myLbtsIsFromNer;
555 DtRtiApiUniquePtr<DtRtiApiTime> myFederationLbts;
558 DtRtiApiUniquePtr<DtRtiApiTime> myFederateTime;
561 DtRtiApiUniquePtr<DtRtiApiTimeInterval> myLookahead;
564 DtRtiApiUniquePtr<DtRtiApiTime> myRequestedTime;
567 DtRtiApiUniquePtr<DtRtiApiTimeInterval> myRequestedLookahead;
571 DtRtiApiUniquePtr<DtRtiApiTime> myEventTime;
575 DtRtiApiUniquePtr<DtRtiApiTimeInterval> myWorkingLookahead;
589 DtRtiApiUniquePtr<DtRtiApiTime> myPendingGrantTime;
592 DtRtiApiUniquePtr<DtRtiApiTime> mySaveTime;
595 DtRtiApiUniquePtr<DtRtiApiTime> myLastSaveTime;
599 bool myEventWasDelivered;
602 bool myIncludeEventTime;
606 unsigned long myNerCycle;
612 bool myInterruptedNextEvent;
615 bool myTimeConstrainedEnabled;
617 bool myTimeRegulatingEnabled;
618 bool myEnableTimeRegulationPending;
619 bool myEnableTimeConstrainedPending;
620 bool myPendingConstrainedSync;
626 bool myRequestingTimeAdvance;
627 bool myRequestingNextEvent;
629 bool myAdvancingTime;
630 bool myTsoEventWasServiced;
634 DtTimeAvailableState myTimeAvailableState;
636 bool myAdjustedLookahead;
637 bool myAdjustedWorkingLookahead;
638 bool myModifyingLookahead;
639 bool myNeraRemovedLookaheadAdjustment;
640 bool myAdvanceWillReduceLookahead;
644 bool mySaveTimePending;
646 bool mySaveTimeAdvancedPending;
648 bool mySaveTimeIsReady;
649 bool myPostSavePending;
650 bool myPostSaveTimePending;
651 bool myInitateSaveReady;
655 MAKRti::DtString mySaveTimeLabel;
658 unsigned long mySerialNumber;
664 mutable std::queue<DtRtiApiTime*> myTempTimePool;
670 static DtTimeMgrCreator theCreator;
Sorted list for queueing messages in time stamped order.
Definition: msgQueue.h:71
Definition: saveInitConstrainedMsg.h:23
This class manages the RTI'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: 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