com.github.phantomthief.pool.impl.LazyKeyAffinity Maven / Gradle / Ivy
package com.github.phantomthief.pool.impl;
import static com.github.phantomthief.util.MoreSuppliers.lazy;
import java.util.Iterator;
import java.util.function.Supplier;
import javax.annotation.Nonnull;
import com.github.phantomthief.pool.KeyAffinity;
import com.github.phantomthief.util.MoreSuppliers.CloseableSupplier;
/**
* @author w.vela
* Created on 2018-02-08.
*/
class LazyKeyAffinity implements KeyAffinity {
private final CloseableSupplier> factory;
LazyKeyAffinity(Supplier> factory) {
this.factory = lazy(factory, false);
}
@Nonnull
@Override
public V select(K key) {
return factory.get().select(key);
}
@Override
public void finishCall(K key) {
factory.get().finishCall(key);
}
@Override
public void close() throws Exception {
factory.tryClose(KeyAffinity::close);
}
@Override
public Iterator iterator() {
return factory.get().iterator();
}
}