java.lang.Object
org.scoja.server.target.FileLRUCache
- All Implemented Interfaces:
- org.scoja.util.TransientMap.Graveyard
- public class FileLRUCache
- extends java.lang.Object
- implements org.scoja.util.TransientMap.Graveyard
Es una caché de ficheros abiertos.
Está implementada con un org.scoja.util.ExpiringLRUCache, así que hereda
de ella tanto sus capacidades (control por tamaño y tiempo) como su
idiosincrasia de uso (todos los accesos son a través del método
#get(String)).
Forma de uso
Si fileCache contiene un FileLRUCache,
final FileShell file = fileCache.get(filename, env);
if (file != null) {
try {
final OutputStream out = file.getOutputStream();
.....
} catch (IOException e) {
System.err.println("UGGS: " + e.getMessage());
} finally {
file.release();
}
}
El método #get(String) devuelve null si no
pudo abrir el fichero; además produce un evento interno con level
PriorityUtils.CRIT>PriorityUtils.CRIT 55 ; por tanto, no es necesario producir
ningún mensaje en el sitio de uso.
Para que un error de apertura no provoque una cantidad
desproporcianada de mensajes de error y de intentos de apertura (lo
que redudaría muy negativamente en el rendimiento de Scoja),
se mantiene una tabla con los ficheros que han fallado.
| Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
DEFAULT_OPEN_MAX_SIZE
public static final int DEFAULT_OPEN_MAX_SIZE
- See Also:
- Constant Field Values
DEFAULT_OPEN_MAX_INACTIVITY
public static final long DEFAULT_OPEN_MAX_INACTIVITY
- See Also:
- Constant Field Values
DEFAULT_FAILED_MAX_SIZE
public static final int DEFAULT_FAILED_MAX_SIZE
- See Also:
- Constant Field Values
DEFAULT_FAILED_MAX_INACTIVITY
public static final long DEFAULT_FAILED_MAX_INACTIVITY
- See Also:
- Constant Field Values
openCache
protected final org.scoja.util.ExpiringLRUCache openCache
failedCache
protected final org.scoja.util.TransientMap failedCache
FileLRUCache
public FileLRUCache()
setSize
public void setSize(int maxSize)
setInactivity
public void setInactivity(long maxInactivity)
setFailedMemory
public void setFailedMemory(long maxMemory)
get
public FileShell get(java.lang.String filename,
org.scoja.server.core.EventContext env)
- Busca el fichero
filename en esta caché.
Si no lo encuentra y recuerda haber fallado en esta operación
hace poco, devuelve null.
Si no lo encuentra y no recuerda haber fallado en esta
operación hace poco, intenta abrirlo.
Si falla en la operación de abrirlo, genera un mensaje
Internal.crit(org.scoja.server.core.EventContext, java.lang.String)>Internal.crit(org.scoja.server.core.EventContext, java.lang.String) 55 y devuelve null.
En cualquier otro caso, el resultado es distinto de
null y ya contiene el fichero abierto.
No se debe olvidar hacer un release() sobre el
resultado una vez que ya se ha terminado de usar.
died
public void died(java.lang.Object key,
java.lang.Object value)
- Specified by:
died in interface org.scoja.util.TransientMap.Graveyard