We need our array to be filled with zeros, not undefineds.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@5429 542714f4-19e9-0310-aa3c-eee0fc999fb1
This commit is contained in:
@@ -62,7 +62,7 @@ public class Throttle
|
||||
*/
|
||||
public function Throttle (operations :int, period :int)
|
||||
{
|
||||
_ops = new Array(operations);
|
||||
_ops = makeArray(operations);
|
||||
_period = period;
|
||||
}
|
||||
|
||||
@@ -72,11 +72,11 @@ public class Throttle
|
||||
* if the limit is decreased.
|
||||
*
|
||||
* @param operations the new maximum number of operations.
|
||||
* @param period the new period.
|
||||
* @param period the new period (in milliseconds).
|
||||
*/
|
||||
public function reinit (operations :int, period :int) :void
|
||||
{
|
||||
var ops :Array = new Array(operations);
|
||||
var ops :Array = makeArray(operations);
|
||||
// copy up to 'operations' of our most recent operations into our new array
|
||||
for (var ii :int = 0; ii < operations; ii++) {
|
||||
ops[operations-ii-1] = _ops[(_oldestOp + _ops.length - ii - 1) % _ops.length];
|
||||
@@ -125,8 +125,7 @@ public class Throttle
|
||||
{
|
||||
// if the oldest operation was performed less than _period ago, we need to throttle
|
||||
var elapsed :int = timeStamp - _ops[_oldestOp];
|
||||
// if negative time elapsed, we must be running on windows; let's just cope by not
|
||||
// throttling
|
||||
// cope with negative time elapsed (shouldn't happen) by not throttling
|
||||
return (elapsed >= 0 && elapsed < _period);
|
||||
}
|
||||
|
||||
@@ -161,6 +160,15 @@ public class Throttle
|
||||
return _ops.length + " ops per " + _period + "ms (oldest " + oldest + ")";
|
||||
}
|
||||
|
||||
protected function makeArray (operations :int) :Array
|
||||
{
|
||||
var ops :Array = new Array(operations);
|
||||
for (var ii :int = 0; ii < operations; ii++) {
|
||||
ops[ii] = 0;
|
||||
}
|
||||
return ops;
|
||||
}
|
||||
|
||||
protected var _ops :Array;
|
||||
protected var _oldestOp :int;
|
||||
protected var _period :int;
|
||||
|
||||
Reference in New Issue
Block a user