    All Packages  Class Hierarchy  This Package  Previous  Next  Index

# Class w3c.tools.store.ResourceStoreManager

    java.lang.Object
       |
       +----w3c.tools.store.ResourceStoreManager

public class ResourceStoreManager
extends Object

##

closed
  Is this store shutdown ?
entries
  The loaded resource stores.
lru
  The store entries least recetenly used list.
server
  The server we are attached to.
state
STOREFILE_IDENTIFIER
  The identifier for resource store files.
sweeper
  Our sweeper thread:

##

ResourceStoreManager(httpd)
  Create a new resource store for the given server.

##

addHolder(Object, ResourceStoreHolder)
  Add the given object as a holder to that store.
checkClosed()
  Check that this resource store manager isn't closed.
checkpoint()
  Checkpoint all modified resource stores, by saving them to disk.
collect()
  Collect enough entries to go back into fixed limits.
createResourceStoreRepository()
  Create a resource store repository name.
getCurrentStoreIdentifier()
getMaxEntries()
loadResourceStore(ResourceStoreHolder, File)
  Load a resource store.
lookupEntry(File, ResourceStoreHolder, boolean)
  Lookup an entry in the store.
markUsed(Object)
  Mark the given store as having been used recently.
pickleProlog(DataOutputStream, ResourceStore)
  Dump a prolog in given stream for that resource store.
pickLRUEntry()
  Pick the least recently used entry, and remove all links to it.
removeHolder(Object, ResourceStoreHolder)
  Remove the given holder from that store.
salvageState(httpd)
  Try to salvage the resource store manager state.
shutdown()
  Shutdown this resource store manager.
unholdResourceStore(ResourceStoreHolder, File)
  Unhold the given store.
unpickleProlog(DataInputStream, ResourceStore)
  Read in the prolog from the given input stream.

##

STOREFILE_IDENTIFIER

      public final static int STOREFILE_IDENTIFIER

  The identifier for resource store files. All files that are used as resource store, and whose resource store implementation make use of `pickleProlog` will start with a dump of that integer.
  See Also:
    pickleProlog, unpickleProlog

entries

      protected Hashtable entries

  The loaded resource stores.

closed

      protected boolean closed

  Is this store shutdown ?

server

      protected httpd server

  The server we are attached to.

lru

      protected LRUList lru

  The store entries least recetenly used list.

state

      protected ResourceStoreState state

sweeper

      protected StoreManagerSweeper sweeper

  Our sweeper thread:

##

ResourceStoreManager

      public ResourceStoreManager(httpd server)

  Create a new resource store for the given server.
  Parameters:
    server - The server that wants a resource store manager.

##

getMaxEntries

      protected final int getMaxEntries()

checkClosed

      protected final synchronized void checkClosed()

  Check that this resource store manager isn't closed.
  Throws: RuntimeException
    If the store manager was closed.

lookupEntry

      protected synchronized StoreEntry lookupEntry(File repository,
                                                    ResourceStoreHolder holder,
                                                    boolean create)

  Lookup an entry in the store.
  Parameters:
    repository - The repository of the store to lookup.
    create - Create a new entry if it doesn't exist.

pickLRUEntry

      protected synchronized StoreEntry pickLRUEntry()

  Pick the least recently used entry, and remove all links to it. After this method as run, the least recently used entry for some store will be returned. The store manager will have discarded all its link to it, and the entry shutdown will have to be performed by the caller.
  Returns:
    An StoreEntry instance, to be cleaned up.

collect

      public void collect()

  Collect enough entries to go back into fixed limits.

addHolder

      public synchronized boolean addHolder(Object token,
                                            ResourceStoreHolder holder)

  Add the given object as a holder to that store.
  Parameters:
    token - Token to the store about to be held.
    holder - The store holder.
  Returns:
    A boolean true if the holder was installed.

removeHolder

      public synchronized void removeHolder(Object token,
                                            ResourceStoreHolder holder)

  Remove the given holder from that store.
  Parameters:
    token - Token to the store that was hold.
    holder - The resource store holder to remove.

loadResourceStore

      public ResourceStore loadResourceStore(ResourceStoreHolder holder,
                                             File repository)

  Load a resource store.
  Parameters:
    holder - The holder for the resource store.
    repository - Its associated repository.

createResourceStoreRepository

      public String createResourceStoreRepository()

  Create a resource store repository name. This method will return a new resource store repository key. When used in conjunction with the `loadResourceStore` method that takes a key as a parameter, this allows to caller to abstract itself from the physical location of the repository.
  Returns:
    A fresh resource store key, guaranteed to be uniq.

getCurrentStoreIdentifier

      public int getCurrentStoreIdentifier()

unholdResourceStore

      public void unholdResourceStore(ResourceStoreHolder holder,
                                      File repository)

  Unhold the given store. For some reason, the holder for this store has decided to close it. Remove from ths list of this store holder. When this call is made, the caller is expected to have cleaned-up the store (stabilize it, etc).
  Parameters:
    holder - The holder of the store.
    store - The store this holder doesn't want to hold anymore.

shutdown

      public synchronized void shutdown()

  Shutdown this resource store manager. Go through all entries, and shut them down.

checkpoint

      public void checkpoint()

  Checkpoint all modified resource stores, by saving them to disk.

markUsed

      public void markUsed(Object token)

  Mark the given store as having been used recently.
  Parameters:
    token - The token the resource store manager provided you when it initialized the store.

pickleProlog

      public static void pickleProlog(DataOutputStream out,
                                      ResourceStore store) throws IOException

  Dump a prolog in given stream for that resource store. Using the resource store manager prolog in a resource store implementation is optional. However, it is recommended that whenever possible, you use it to get the benefits of the main method of that class.
  Parameters:
    out - The output stream to dump the prolog to.
    store - The resource store which is being dumped.
  Throws: IOException
    If the prolog couldn't be pickled to the given output stream.
  See Also:
    unpickleProlog

unpickleProlog

      public static void unpickleProlog(DataInputStream in,
                                        ResourceStore store) throws IOException, NotAStoreException, InvalidStoreClassException, StoreClassVersionException

  Read in the prolog from the given input stream. This method checks the consistency between the implementation of the store that wants to read from that stream, and the implementation of the store that has been used to create it.

  Using that method, as well as using the `pickleProlog` method is optional; however, using one makes using the other mandatory.

  Parameters:
    in - The input stream to read the prolog from.
    store - The store that is to be created from the given input stream.
  Throws: IOException
    If the stream couldn't be read.
  Throws: NotAStoreException
    If the given repository wasn't flagged as containing a resource store.
  Throws: InvalidStoreClass
    If the loading class is not the saving class.
  Throws: StoreClassVersionException
    If the saved store version number doesn't match the loader's class version number.
  See Also:
    pickleProlog

salvageState

      public ResourceStoreState salvageState(httpd server)

  Try to salvage the resource store manager state. That's pretty easy and robust, it should really work well if no one hacked the store directory.
  Returns:
    A ResourceStoreState instance.

    All Packages  Class Hierarchy  This Package  Previous  Next  Index