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)
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();
203 bool testForExceptions=
true);
207 bool testForExceptions=
true);
210 virtual bool queryMinNextEventTime(
DtRtiApiTime& theTime,
211 bool testForExceptions=
true);
217 virtual bool queryLookahead (
219 bool testForExceptions=
true);
222 virtual void retract (
230 virtual void prepareToRestore();
236 virtual void saveFinished();
240 virtual void postSaveFinished();
243 virtual void processSaveInitiate();
246 virtual bool timeAdvancing()
const;
265 virtual unsigned long nextSerialNumber();
268 virtual bool isTimeRegulating()
const;
269 virtual bool isTimeConstrained()
const;
272 virtual bool tsoEventWasServiced()
const;
273 virtual void setTsoEventWasServiced(
bool eventServiced);
276 virtual bool timeAvailable()
const;
287 static void setCreatorFunction(DtTimeMgrCreator creator);
293 enum DtTimeAvailableState
296 DtTimeNotAvailable = 0,
299 DtTimeNotAvailableAndNotAdvancingAvailable,
300 DtTimeNotAvailableAndAdvancingAvailable,
301 DtTimeAvailableAndNotAdvancingAvailable,
302 DtTimeAvailableAndAdvancingAvailable
310 virtual void sendEnableTimeRegulationMsg(
DtRtiApiTime const & theTime,
314 virtual void sendEnableTimeConstrainedMsg(
DtRtiApiTime const & theTime,
318 virtual void sendTimeAdvanceRequestMsg(
DtRtiApiTime const & theTime,
322 virtual void sendConstrainedSyncMsg(
DtRtiApiTime const & theTime,
326 virtual void sendNextEventRequestMsg(
DtRtiApiTime const & nerTime,
328 unsigned long nerCycle);
331 virtual void sendDisableMsg(DtTimeServiceType type);
334 virtual void sendRetractMsg(
const unsigned long serialNumberVal);
337 virtual void sendSaveTimeAdvanceMsg();
340 virtual void sendInitiatedSaveMsg();
354 virtual void setTimeAdvancing(
bool isAdvancing);
357 virtual void setTimeAvailableState(DtTimeAvailableState timeAvailableState);
360 virtual DtTimeAvailableState timeAvailableState()
const;
366 virtual void adjustZeroLookahead(
bool forceAdjust=
false);
371 virtual void resetZeroLookahead();
380 void commitLookaheadModifcation();
383 virtual bool canGrantImmediately(
DtRtiApiTime const & theTime);
386 virtual bool timeForSave(
DtRtiApiTime const & requestTime);
395 bool canDeliverImmediately(
DtRtiApiTime const & timeVal,
399 virtual void checkGalt(
bool sendLbtsMsg);
402 virtual void checkTimedSave();
408 virtual bool checkMsgQueue(
DtRtiApiTime const & timeUpperBound,
415 virtual bool checkMsgQueue(
DtRtiApiTime const & timeUpperBound);
423 virtual void processNextTsoEvents(
429 virtual void flushMsgQueue(
DtRtiApiTime const & requestTime);
432 virtual void checkTimeAdvanceRequest();
436 virtual void checkNextEventRequest();
439 virtual void sendNerMessage();
447 virtual void processRegulationEnabled(
const DtRegulationEnabledMsg& msg);
450 virtual void processConstrainedEnabled(
const DtConstrainedEnabledMsg& msg);
453 virtual void processLbts(
const DtLbtsMsg& msg);
456 virtual void processNerLbts(
const DtNerLbtsMsg& msg);
459 virtual void processSyncConstrained(
const DtSyncConstrainedMsg& msg);
462 virtual void processResumeConstrained(
const DtResumeConstrainedMsg& msg);
465 virtual void processRetract(
const DtRetractMsg& msg);
480 virtual int sizeNeededForVariant();
489 virtual void destroyTempTimePool();
499 static void processRegulationEnabled(
const DtRegulationEnabledMsg& msg,
void* usr);
502 static void processConstrainedEnabled(
const DtConstrainedEnabledMsg& msg,
void* usr);
505 static void processLbts(
const DtLbtsMsg& msg,
void* usr);
508 static void processNerLbts(
const DtNerLbtsMsg& msg,
void* usr);
511 static void processSyncConstrained(
const DtSyncConstrainedMsg& msg,
void* usr);
514 static void processResumeConstrained(
const DtResumeConstrainedMsg& msg,
void* usr);
517 static void processRetract(
const DtRetractMsg& msg,
void* usr);
520 static void processSaveTime(
const DtSaveTimeMsg& msg,
void* usr);
544 bool myLastSaveTimeIsValid;
551 std::auto_ptr <DtRtiApiTime> myLits;
554 std::auto_ptr <DtRtiApiTime> myLots;
557 std::auto_ptr <DtRtiApiTime> myGalt;
558 bool myLbtsIsFromNer;
561 std::auto_ptr <DtRtiApiTime> myFederationLbts;
564 std::auto_ptr <DtRtiApiTime> myFederateTime;
567 std::auto_ptr <DtRtiApiTimeInterval> myLookahead;
570 std::auto_ptr <DtRtiApiTime> myRequestedTime;
573 std::auto_ptr <DtRtiApiTimeInterval> myRequestedLookahead;
577 std::auto_ptr <DtRtiApiTime> myEventTime;
581 std::auto_ptr <DtRtiApiTimeInterval> myWorkingLookahead;
595 std::auto_ptr <DtRtiApiTime> myPendingGrantTime;
598 std::auto_ptr <DtRtiApiTime> mySaveTime;
601 std::auto_ptr <DtRtiApiTime> myLastSaveTime;
605 bool myEventWasDelivered;
608 bool myIncludeEventTime;
612 unsigned long myNerCycle;
618 bool myInterruptedNextEvent;
621 bool myTimeConstrainedEnabled;
623 bool myTimeRegulatingEnabled;
624 bool myEnableTimeRegulationPending;
625 bool myEnableTimeConstrainedPending;
626 bool myPendingConstrainedSync;
632 bool myRequestingTimeAdvance;
633 bool myRequestingNextEvent;
635 bool myAdvancingTime;
636 bool myTsoEventWasServiced;
640 DtTimeAvailableState myTimeAvailableState;
642 bool myAdjustedLookahead;
643 bool myAdjustedWorkingLookahead;
644 bool myModifyingLookahead;
645 bool myNeraRemovedLookaheadAdjustment;
646 bool myAdvanceWillReduceLookahead;
650 bool mySaveTimePending;
652 bool mySaveTimeAdvancedPending;
654 bool mySaveTimeIsReady;
655 bool myPostSavePending;
656 bool myPostSaveTimePending;
657 bool myInitateSaveReady;
661 MAKRti::DtString mySaveTimeLabel;
664 unsigned long mySerialNumber;
670 std::queue<DtRtiApiTime*> myTempTimePool;
676 static DtTimeMgrCreator theCreator;
Sorted list for queueing messages in time stamped order.
Definition: msgQueue.h:81
Definition: saveInitConstrainedMsg.h:23
This class manages the RTI's start-up configuration using both MTL variables and functions.
Definition: RIDparams.h:87
!DtIFSPEC1516
Definition: fedTimeFactory.h:190
Definition: saveTimeMsg.h:21
RTI::FedTime DtRtiApiTimeInterval
Definition: rtiApiTypes.h:50
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:84
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: initiatedSaveMsg.h:21
Definition: internalTypes.h:63
#define DT_DLL_LRC
Definition: rtiMsConfig.h:126
Definition: saveFile.h:21
Definition: retractList.h:119
RTI::FedTime DtRtiApiTime
Typedefs for RTI API types that are frequently require conditional precompile directives.
Definition: rtiApiTypes.h:49