cleanCache method
int
cleanCache(
- int maxMemory
)
Implementation
int cleanCache(int maxMemory) {
if (maxMemory <= 0) return -1;
if (_usedMemory <= maxMemory) return 0;
// Over the limit: the timed out entries first. At most once per second
// (all the entries are checked), the minimal [timeout].
if (hasTimeout) {
var now = DateTime.now().millisecondsSinceEpoch;
if (now - _lastCleanTimedOut >= 1000) {
_lastCleanTimedOut = now;
cleanCacheTimedOut();
}
}
var usedMemory = _usedMemory;
if (usedMemory <= maxMemory) return 0;
var removeNeeded = usedMemory - maxMemory;
var removed = 0;
while (_bySize.isNotEmpty) {
// The largest first.
var entry = _bySize.first;
var memory = entry.memory;
_removeEntry(entry.request);
removed += memory;
if (verbose) {
_log('Removed cached entry> memory: $memory / $removeNeeded');
}
if ((usedMemory - removed) <= maxMemory) break;
}
if (verbose) {
_log('Total removed memory: $removed / $usedMemory / $maxMemory');
}
return removed;
}