![]() |
MAK RTIspy API Documentation for HLA Evolved
|
00001 /********************************************************************* 00002 ** Copyright (c) 2004 MaK Technologies, Inc. 00003 ** All rights reserved. 00004 *********************************************************************/ 00005 /********************************************************************* 00006 ** $RCSfile: messageThrottle.h,v $ $Revision: 1.10 $ $State: Exp $ 00007 *********************************************************************/ 00008 00011 00012 #ifndef DtMessageThrottle_H_ 00013 #define DtMessageThrottle_H_ 00014 00015 #include "rtiMsConfig.h" 00016 #include <vlutil/vlFedTarget.h> 00017 #include <vlutil/vlTime.h> 00018 #include <vlutil/vlInetAddr.h> 00019 #include <queue> 00020 00025 00026 00027 class DtConnectionMgr; 00028 class DtRtiMsg; 00029 00032 class DtDelayedMessage 00033 { 00034 protected: 00036 DtDelayedMessage(); 00037 00038 public: 00039 00041 DtDelayedMessage(DtRtiMsg* msg, MAKRti::DtTransportType transport, MAKRti::DtInetAddr addr); 00042 00044 ~DtDelayedMessage(); 00045 00046 DtRtiMsg* msg; 00047 MAKRti::DtTransportType transport; 00048 MAKRti::DtInetAddr addr; 00049 }; 00050 00051 class DT_DLL_LRC DtMessageThrottle 00052 { 00053 protected: 00055 DtMessageThrottle(); 00056 00057 public: 00058 00060 DtMessageThrottle(float transmitDelay, float transmitRate, float autoProvideDelay ); 00061 00063 virtual ~DtMessageThrottle(); 00064 00068 virtual void activateTransmitDelay(); 00069 00071 virtual bool delayTransmit() const; 00072 00075 virtual bool queueMessage(DtRtiMsg const& msg, MAKRti::DtTransportType transport, 00076 MAKRti::DtInetAddr addr); 00077 00081 virtual bool queueMessage(DtRtiMsg* msg, MAKRti::DtTransportType transport, 00082 MAKRti::DtInetAddr addr); 00083 00090 virtual void testTransmitDelay(DtConnectionMgr* connMgr); 00091 00095 virtual void activateAutoProvideDelay(); 00096 00098 virtual bool delayAutoProvide() const; 00099 00102 virtual void testAutoProvideDelay(DtConnectionMgr* connMgr); 00103 00105 virtual void processQueuedMessages(DtConnectionMgr* connMgr); 00106 00108 virtual void flush(DtConnectionMgr* connMgr); 00109 00111 virtual void clear(); 00112 00113 protected: 00114 00115 MAKRti::DtClock myClock; 00116 std::queue<DtDelayedMessage*> myMessageQueue; 00117 MAKRti::DtTime myTransmitTime; 00118 MAKRti::DtTime myTickTime; 00119 MAKRti::DtTime myAutoProvideTime; 00120 float myTransmitDelayInterval; 00121 float myAutoProvideDelayInterval; 00122 float myMessageRate; 00123 unsigned long myMessagePerTick; 00124 unsigned long myMessagesSent; 00125 bool myMeterMessages; 00126 bool myDelayMessages; 00127 bool myDelayTransmit; 00128 bool myDelayProvides; 00129 bool myDelayAutoProvide; 00130 bool myTransmitTick; 00131 bool myAutoProvideTick; 00132 }; 00133 00134 #endif