package org.async.rmi.pool; import org.async.rmi.Connection; import org.async.rmi.Factory; import org.async.rmi.messages.Message; import java.io.Closeable; import java.util.concurrent.CompletableFuture; /** * Created by Barak Bar Orion * 27/10/14. */ public interface Pool<C extends PooledResource> extends Closeable { /** * Get resource from the pool. * @return a free resource. */ CompletableFuture<C> get(); /** * Mark c as free in the pool. * May call to c.close() if the pool capacity exceeded. * @param c a PooledResource managed by this pool. */ void free(C c); void setFactory(Factory<CompletableFuture<C>> factory); }