privateintconvertMillisRadio(){ switch (rateUnit) { case MILLISECONDS: return1; case SECONDS: return1000; case MINUTES: return1000 * 60; case HOURS: return1000 * 60 * 60; default: thrownew AssertionError(); } }
privatevoidrefreshBucketUsed(){ long now = System.currentTimeMillis(); if (lastRefreshTime > 0) { long n = (now - lastRefreshTime) / perMillisRadio; used = Math.max(0, used - n * rate); } lastRefreshTime = now; }