ovidiu      02/04/09 17:35:06

  Modified:    src/scratchpad/schecoon/src/org/apache/cocoon/components/flow
                        ContinuationsManagerImpl.java
  Log:
  Pass and additional time-to-live argument in
  createWebContinuation(). Added an 'expirations' sorted set to maintain
  continuations in the order of their expiration.
  
  Revision  Changes    Path
  1.3       +20 -7     
xml-cocoon2/src/scratchpad/schecoon/src/org/apache/cocoon/components/flow/ContinuationsManagerImpl.java
  
  Index: ContinuationsManagerImpl.java
  ===================================================================
  RCS file: 
/home/cvs/xml-cocoon2/src/scratchpad/schecoon/src/org/apache/cocoon/components/flow/ContinuationsManagerImpl.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- ContinuationsManagerImpl.java     2 Apr 2002 04:59:49 -0000       1.2
  +++ ContinuationsManagerImpl.java     10 Apr 2002 00:35:06 -0000      1.3
  @@ -2,17 +2,20 @@
   
   import java.security.SecureRandom;
   import java.util.Collections;
  +import java.util.Comparator;
   import java.util.HashMap;
   import java.util.HashSet;
  +import java.util.Iterator;
   import java.util.List;
   import java.util.Map;
   import java.util.Set;
  +import java.util.SortedSet;
  +import java.util.TreeSet;
   import org.apache.avalon.framework.component.Component;
   import org.apache.avalon.framework.configuration.Configurable;
   import org.apache.avalon.framework.configuration.Configuration;
   import org.apache.avalon.framework.logger.AbstractLoggable;
   import org.apache.avalon.framework.thread.ThreadSafe;
  -import java.util.Iterator;
   
   /**
    * The default implementation of {@link ContinuationsManager}.
  @@ -33,10 +36,8 @@
     /**
      * How long does a continuation exist in memory since the last
      * access? The time is in seconds, and the default is 3600 (1 hour).
  -   *
  -   * FIXME: Not used for the moment.
      */
  -  protected int timeToLive;
  +  protected int defaultTimeToLive;
   
     /**
      * Maintains the forrest of <code>WebContinuation</code> trees.
  @@ -49,6 +50,13 @@
      */
     protected Map idToWebCont = Collections.synchronizedMap(new HashMap());
   
  +  /**
  +   * Sorted set of <code>WebContinuation</code> instances, based on
  +   * their expiration time. This is used by the background thread to
  +   * invalidate continuations.
  +   */
  +  protected SortedSet expirations = new TreeSet();
  +
     public ContinuationsManagerImpl()
       throws Exception
     {
  @@ -59,17 +67,21 @@
   
     public void configure(Configuration config)
     {
  -    this.timeToLive = config.getAttributeAsInteger("time-to-live", 3600);
  +    defaultTimeToLive = config.getAttributeAsInteger("time-to-live", 3600);
     }
   
     public WebContinuation createWebContinuation(Object kont,
  -                                               WebContinuation parentKont)
  +                                               WebContinuation parentKont,
  +                                               int timeToLive)
     {
  -    WebContinuation wk = new WebContinuation(kont, parentKont, this);
  +    int ttl = (timeToLive == 0 ? defaultTimeToLive : timeToLive);
  +    WebContinuation wk = new WebContinuation(kont, parentKont, this, ttl);
   
       if (parentKont == null)
         forrest.add(wk);
   
  +    expirations.add(wk);
  +
       // No need to add the WebContinuation in idToWebCont as it was
       // already done during its construction.
   
  @@ -92,6 +104,7 @@
     protected void _invalidate(WebContinuation wk)
     {
       idToWebCont.remove(wk.getId());
  +    expirations.remove(wk);
       
       // Invalidate all the children continuations as well
       List children = wk.getChildren();
  
  
  

----------------------------------------------------------------------
In case of troubles, e-mail:     [EMAIL PROTECTED]
To unsubscribe, e-mail:          [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to