All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.github.phantomthief.pool.impl.LazyKeyAffinity Maven / Gradle / Ivy

There is a newer version: 0.1.19
Show newest version
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();
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy