package es.ejie.frmk.infraestructura.poolCache;

/**
   Un pool de recursos. Los recursos se crean, se distribuyen, se usan y se devuelven al pool para su uso posterior
 */
public interface Q70RecursoPool {

    /**
     * Devuelve un recurso del pool, si hay disponoibles. Si no se lanza la excepcion.       
     * 
     * @return Recurso del pool
     * @throws Q70PoolException
     */
    public Q70RecursoPoolable getResource() throws Q70PoolException;

    /**
     * Devuelve el recurso al pool para su posterior uso.
     * 
     * @param resource Recurso del pool
     */
    public void freeResource(Q70RecursoPoolable resource);

    /**
     * Vacia el pool
     */
    public void release();


    /**
     * Devuelve el numero de entradas en el pool
     * 
     * @return numero de entradas en el pool
     */
    public int size();
}
