package org.ovirt.engine.ui.uicommonweb.models.utils;
import java.util.HashSet;
import java.util.Set;
import com.google.gwt.user.client.Timer;
/**
* Set items of which are automatically removed after a period of time.
*/
public class ExpiringSet<T> {
private final Set<T> set = new HashSet<>();
private final int removalDelaySec;
public ExpiringSet(int removalDelaySec) {
this.removalDelaySec = removalDelaySec;
}
public void add(final T item, final RemovalAction<T> removalAction) {
set.add(item);
new Timer() {
@Override
public void run() {
final boolean itemWasPresent = set.remove(item);
if (!itemWasPresent) {
return;
}
removalAction.itemRemoved(item);
}
}.schedule(removalDelaySec * 1000);
}
public boolean contains(T item) {
return set.contains(item);
}
public interface RemovalAction<T> {
void itemRemoved(T item);
}
}