purge method

WeakKeyMap<K, V> purge()

Removes all entries whose keys were garbage-collected.

Implementation

WeakKeyMap<K, V> purge() {
  final onPurgedValues = this.onPurgedValues;

  var purgedValues = <V>[];

  _map.removeWhere((key, value) {
    if (value.target == null) {
      if (onPurgedValues != null) {
        var v = value.payload;
        if (v != null) {
          purgedValues.add(v);
        }
      }
      return true;
    }
    return false;
  });

  _onPurgeValues(purgedValues);

  _unpurgedCount = 0;

  if (onPurgedValues != null && purgedValues.isNotEmpty) {
    onPurgedValues(purgedValues);
  }

  return this;
}