capnproto-java-rpc/runtime/src/main/java/org/capnproto/ImportTable.java

41 lines
864 B
Java
Raw Normal View History

2020-09-28 13:21:31 +00:00
package org.capnproto;
import java.util.HashMap;
import java.util.Iterator;
import java.util.function.Consumer;
abstract class ImportTable<T> implements Iterable<T> {
private final HashMap<Integer, T> slots = new HashMap<>();
protected abstract T newImportable();
public T put(int id) {
return slots.computeIfAbsent(id, key -> newImportable());
}
public T find(int id) {
return slots.get(id);
}
public T erase(int id, T entry) {
var removed = slots.remove(id, entry);
assert removed;
return entry;
}
public T erase(int id) {
return slots.remove(id);
}
@Override
public Iterator<T> iterator() {
return slots.values().iterator();
}
@Override
public void forEach(Consumer<? super T> action) {
slots.values().forEach(action);
}
}