diff options
| author | Christian Goetze <cg@lindenlab.com> | 2009-07-01 00:22:05 +0000 |
|---|---|---|
| committer | Christian Goetze <cg@lindenlab.com> | 2009-07-01 00:22:05 +0000 |
| commit | e588d1f28419745ee1e1ee98dc1852e0364a4088 (patch) | |
| tree | 8a3546576e0d5a8f0cf32cca68d0913f1061d523 /indra/llmessage/llthrottle.cpp | |
| parent | 5f4c09fa1f4b09126e1a16e78044c64e97828530 (diff) | |
svn merge -r125825:125901 svn+ssh://svn.lindenlab.com/svn/user/cg/qar-1654
QAR-1654 merge completed.
Diffstat (limited to 'indra/llmessage/llthrottle.cpp')
| -rw-r--r-- | indra/llmessage/llthrottle.cpp | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/indra/llmessage/llthrottle.cpp b/indra/llmessage/llthrottle.cpp index 70279a3c62..0872efba50 100644 --- a/indra/llmessage/llthrottle.cpp +++ b/indra/llmessage/llthrottle.cpp @@ -265,6 +265,31 @@ BOOL LLThrottleGroup::setNominalBPS(F32* throttle_vec) return changed; } +// Return bits available in the channel +S32 LLThrottleGroup::getAvailable(S32 throttle_cat) +{ + S32 retval = 0; + + F32 category_bps = mCurrentBPS[throttle_cat]; + F32 lookahead_bits = category_bps * THROTTLE_LOOKAHEAD_TIME; + + // use a temporary bits_available + // since we don't want to change mBitsAvailable every time + F32 elapsed_time = (F32)(LLMessageSystem::getMessageTimeSeconds() - mLastSendTime[throttle_cat]); + F32 bits_available = mBitsAvailable[throttle_cat] + (category_bps * elapsed_time); + + if (bits_available >= lookahead_bits) + { + retval = (S32) gThrottleMaximumBPS[throttle_cat]; + } + else + { + retval = (S32) bits_available; + } + + return retval; +} + BOOL LLThrottleGroup::checkOverflow(S32 throttle_cat, F32 bits) { |
