purge method

bool purge({
  1. bool force = false,
})

Removes lost references.

  • If any WeakReference is not pointing to its target it will reduce the length of this list.
  • If force is true will force a full check of entries. IF false will only check entries if there's a new operation in the list.
  • Returns true if a full check of entries was performed.

Implementation

bool purge({bool force = false}) {
  var now = DateTime.now();

  if (_purgeModCount == _modCount && !force) {
    var purgeElapsedTime = now.difference(_purgeTime);

    if (purgeElapsedTime < purgeInterval) {
      return false;
    }
  }

  for (var i = 0; i < _entries.length;) {
    var weakRef = _entries[i];

    if (weakRef.target == null) {
      _entries.removeAt(i);
    } else {
      ++i;
    }
  }

  ++_modCount;

  _purgeModCount = _modCount;

  _purgeTime = now;

  return true;
}