Package ch.qos.logback.core.spi

# Interface ComponentTracker<C>

All Known Implementing Classes:
  `AbstractComponentTracker`, `AppenderTracker`, `CyclicBufferTracker`

public interface ComponentTracker<C>
Interface for tracking various components by key. Components which have not been accessed for more than a user-specified duration are deemed stale and removed. Components can also be explicitly marked as having reached their `endOfLife(String)` in which case they will linger for a few seconds and then be removed.

Since:
  1.0.12
Author:
  Tommy Becker, Ceki Gulcu, David Roussel

## Field Summary

Fields
Modifier and Type
Field
Description
`static final int`
`DEFAULT_MAX_COMPONENTS`
By default an unlimited number of elements can be tracked.
`static final int`
`DEFAULT_TIMEOUT`
The default timeout duration is 30 minutes

## Method Summary

Modifier and Type
Method
Description
`Collection<C>`
`allComponents()`
Returns the collection of all components tracked by this instance.
`Set<String>`
`allKeys()`
Set of all keys in this tracker in no particular order.
`void`
`endOfLife(String key)`
Mark component identified by 'key' as having reached its end-of-life.
`C`
`find(String key)`
Find the component identified by 'key', without updating the timestamp.
`int`
`getComponentCount()`
Returns the number of components tracked.
`C`
`getOrCreate(String key, long timestamp)`
Get the component identified by 'key', updating its timestamp in the process.
`void`
`removeStaleComponents(long now)`
Remove components which are deemed stale.

## Field Details

### DEFAULT_TIMEOUT

static final int DEFAULT_TIMEOUT
The default timeout duration is 30 minutes

See Also:
  - Constant Field Values

### DEFAULT_MAX_COMPONENTS

static final int DEFAULT_MAX_COMPONENTS
By default an unlimited number of elements can be tracked.

See Also:
  - Constant Field Values

## Method Details

### getComponentCount

int getComponentCount()
Returns the number of components tracked.

Returns:
  number of components

### find

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

Parameters:
  `key` -
Returns:
  corresponding component, may be null

### getOrCreate

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.

Parameters:
  `key` -
  `timestamp` -
Returns:

### removeStaleComponents

void removeStaleComponents(long now)
Remove components which are deemed stale. Components which have not been accessed for more than a user-specified duration are deemed stale.

If the number of components exceeds, `getComponentCount()`, components in excess will be removed.

Depending on the component type, components will be cleared or stopped (as appropriate) right before removal.

Parameters:
  `now` - current time in milliseconds

### endOfLife

void endOfLife(String key)
Mark component identified by 'key' as having reached its end-of-life. End-of-lifed components will linger for a few more seconds before being removed.

Parameters:
  `key` -

### allComponents

Collection<C> allComponents()
Returns the collection of all components tracked by this instance.

Returns:
  collection of components

### allKeys

Set<String> allKeys()
Set of all keys in this tracker in no particular order.

Returns: