Docjar: A Java Source and Docuemnt Enginecom.*    java.*    javax.*    org.*    all    new    plug-in

Quick Search    Search Deep

org.scoja.server.target
Class FileLRUCache  view FileLRUCache download FileLRUCache.java

java.lang.Object
  extended byorg.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.


Field Summary
static long DEFAULT_FAILED_MAX_INACTIVITY
           
static int DEFAULT_FAILED_MAX_SIZE
           
static long DEFAULT_OPEN_MAX_INACTIVITY
           
static int DEFAULT_OPEN_MAX_SIZE
           
protected  org.scoja.util.TransientMap failedCache
           
protected  org.scoja.util.ExpiringLRUCache openCache
           
 
Constructor Summary
FileLRUCache()
           
 
Method Summary
 void died(java.lang.Object key, java.lang.Object value)
           
 FileShell get(java.lang.String filename, org.scoja.server.core.EventContext env)
          Busca el fichero filename en esta caché.
 void setFailedMemory(long maxMemory)
           
 void setInactivity(long maxInactivity)
           
 void setSize(int maxSize)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

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
Constructor Detail

FileLRUCache

public FileLRUCache()
Method Detail

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