Class AbstractComponentTracker<C>

java.lang.Object
ch.qos.logback.core.spi.AbstractComponentTracker<C>
Type Parameters:
C - component type
All Implemented Interfaces:
ComponentTracker<C>
Direct Known Subclasses:
AppenderTracker, CyclicBufferTracker

public abstract class AbstractComponentTracker<C> extends Object implements ComponentTracker<C>
An abstract implementation of the ComponentTracker interface. Derived classes must implement buildComponent(String), processPriorToRemoval(Object), and isComponentStale(Object) methods as appropriate for their component type.
  • Field Details

  • Constructor Details

    • AbstractComponentTracker

      public AbstractComponentTracker()
  • Method Details

    • processPriorToRemoval

      protected abstract void processPriorToRemoval(C component)
      Stop or clean the component.
      Parameters:
      component -
    • buildComponent

      protected abstract C buildComponent(String key)
      Build a component based on the key.
      Parameters:
      key -
      Returns:
    • isComponentStale

      protected abstract boolean isComponentStale(C c)
      Components can declare themselves stale. Such components may be removed before they time out.
      Parameters:
      c -
      Returns:
    • getComponentCount

      public int getComponentCount()
      Description copied from interface: ComponentTracker
      Returns the number of components tracked.
      Specified by:
      getComponentCount in interface ComponentTracker<C>
      Returns:
      number of components
    • getFromEitherMap

      private AbstractComponentTracker.Entry<C> getFromEitherMap(String key)
      Get an entry from the liveMap, if not found search the lingerersMap.
      Parameters:
      key -
      Returns:
    • find

      public C find(String key)
      Find the component identified by 'key', without updating the timestamp. Returns null if no corresponding component could be found.

      Note that this method is synchronized.

      Specified by:
      find in interface ComponentTracker<C>
      Parameters:
      key -
      Returns:
      corresponding component, may be null
    • getOrCreate

      public C getOrCreate(String key, long timestamp)
      Get the component identified by 'key', updating its timestamp in the process. If the corresponding component could not be found, it is created.

      Note that this method is atomic, i.e. synchronized.

      Specified by:
      getOrCreate in interface ComponentTracker<C>
      Parameters:
      key -
      timestamp -
      Returns:
    • endOfLife

      public void endOfLife(String key)
      Mark component identified by 'key' as having reached its end-of-life.
      Specified by:
      endOfLife in interface ComponentTracker<C>
      Parameters:
      key -
    • removeStaleComponents

      public void removeStaleComponents(long now)
      Clear (and detach) components which are stale. Components which have not been accessed for more than a user-specified duration are deemed stale.
      Specified by:
      removeStaleComponents in interface ComponentTracker<C>
      Parameters:
      now -
    • removeExcedentComponents

      private void removeExcedentComponents()
    • removeStaleComponentsFromMainMap

      private void removeStaleComponentsFromMainMap(long now)
    • removeStaleComponentsFromLingerersMap

      private void removeStaleComponentsFromLingerersMap(long now)
    • genericStaleComponentRemover

      private void genericStaleComponentRemover(LinkedHashMap<String,AbstractComponentTracker.Entry<C>> map, long now, AbstractComponentTracker.RemovalPredicator<C> removalPredicator)
    • isTooSoonForRemovalIteration

      private boolean isTooSoonForRemovalIteration(long now)
    • isEntryStale

      private boolean isEntryStale(AbstractComponentTracker.Entry<C> entry, long now)
    • isEntryDoneLingering

      private boolean isEntryDoneLingering(AbstractComponentTracker.Entry<C> entry, long now)
    • allKeys

      public Set<String> allKeys()
      Description copied from interface: ComponentTracker
      Set of all keys in this tracker in no particular order.
      Specified by:
      allKeys in interface ComponentTracker<C>
      Returns:
    • allComponents

      public Collection<C> allComponents()
      Description copied from interface: ComponentTracker
      Returns the collection of all components tracked by this instance.
      Specified by:
      allComponents in interface ComponentTracker<C>
      Returns:
      collection of components
    • getTimeout

      public long getTimeout()
    • setTimeout

      public void setTimeout(long timeout)
    • getMaxComponents

      public int getMaxComponents()
    • setMaxComponents

      public void setMaxComponents(int maxComponents)