00001 00032 #ifndef LL_LLVIEWERTHROTTLE_H 00033 #define LL_LLVIEWERTHROTTLE_H 00034 00035 #include <vector> 00036 00037 #include "llstring.h" 00038 #include "llframetimer.h" 00039 #include "llthrottle.h" 00040 00041 class LLViewerThrottleGroup 00042 { 00043 LLViewerThrottleGroup(); 00044 LLViewerThrottleGroup(const F32 settings[TC_EOF]); 00045 00046 LLViewerThrottleGroup operator*(const F32 frac) const; 00047 LLViewerThrottleGroup operator+(const LLViewerThrottleGroup &b) const; 00048 LLViewerThrottleGroup operator-(const LLViewerThrottleGroup &b) const; 00049 00050 F32 getTotal() { return mThrottleTotal; } 00051 void sendToSim() const; 00052 00053 void dump(); 00054 00055 friend class LLViewerThrottle; 00056 protected: 00057 F32 mThrottles[TC_EOF]; 00058 F32 mThrottleTotal; 00059 }; 00060 00061 class LLViewerThrottle 00062 { 00063 public: 00064 LLViewerThrottle(); 00065 00066 void setMaxBandwidth(F32 kbits_per_second, BOOL from_event = FALSE); 00067 00068 void load(); 00069 void save() const; 00070 void sendToSim() const; 00071 00072 F32 getMaxBandwidth()const { return mMaxBandwidth; } 00073 F32 getCurrentBandwidth() const { return mCurrentBandwidth; } 00074 00075 void updateDynamicThrottle(); 00076 void resetDynamicThrottle(); 00077 00078 LLViewerThrottleGroup getThrottleGroup(const F32 bandwidth_kbps); 00079 00080 static const char* sNames[TC_EOF]; /* Flawfinder: ignore */ 00081 protected: 00082 F32 mMaxBandwidth; 00083 F32 mCurrentBandwidth; 00084 00085 LLViewerThrottleGroup mCurrent; 00086 00087 std::vector<LLViewerThrottleGroup> mPresets; 00088 00089 LLFrameTimer mUpdateTimer; 00090 F32 mThrottleFrac; 00091 }; 00092 00093 extern LLViewerThrottle gViewerThrottle; 00094 00095 #endif // LL_LLVIEWERTHROTTLE_H