summaryrefslogtreecommitdiff
path: root/indra/llmessage/llthrottle.cpp
diff options
context:
space:
mode:
authorBryan O'Sullivan <bos@lindenlab.com>2009-09-29 16:20:20 -0700
committerBryan O'Sullivan <bos@lindenlab.com>2009-09-29 16:20:20 -0700
commit9b8b0571645f8b607ecc24221c807cc02a03692f (patch)
treef52f58138ecf70abf21f2a1b62097c3cbfce1c2f /indra/llmessage/llthrottle.cpp
parent6d887be5895286f6b65ea751014f33bd9e0faac4 (diff)
parent5798ac6fc8488f02d3a2f338f5b5eeedb35e7ba6 (diff)
Merge
Diffstat (limited to 'indra/llmessage/llthrottle.cpp')
-rw-r--r--indra/llmessage/llthrottle.cpp25
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)
{