Package org.apache.storm.windowing

## Interface EvictionPolicy<T,​S>

- Type Parameters:
    `T` - the type of event that is tracked.
  All Known Implementing Classes:
    `CountEvictionPolicy`, `TimeEvictionPolicy`, `WatermarkCountEvictionPolicy`, `WatermarkTimeEvictionPolicy`

      public interface EvictionPolicy<T,​S>

  Eviction policy tracks events and decides whether an event should be evicted from the window or not.

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Interface | Description
    --- | --- | ---
    `static class` | `EvictionPolicy.Action` | The action to be taken when `evict(Event)` is invoked.

  - ### Method Summary

    All Methods Instance Methods Abstract Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `EvictionPolicy.Action` | `evict​(Event<T> event)` | Decides if an event should be expired from the window, processed in the current window or kept for later processing.
    `EvictionContext` | `getContext()` | Returns the current context that is part of this eviction policy.
    `S` | `getState()` | Return runtime state to be checkpointed by the framework for restoring the eviction policy in case of failures.
    `void` | `reset()` | Resets the eviction policy.
    `void` | `restoreState​(S state)` | Restore the eviction policy from the state that was earlier checkpointed by the framework.
    `void` | `setContext​(EvictionContext context)` | Sets a context in the eviction policy that can be used while evicting the events.
    `void` | `track​(Event<T> event)` | Tracks the event to later decide whether `evict(Event)` should evict it or not.

- - ### Method Detail

    - #### evict

          EvictionPolicy.Action evict​(Event<T> event)

      Decides if an event should be expired from the window, processed in the current window or kept for later processing.
      Parameters:
        `event` - the input event
      Returns:
        the `EvictionPolicy.Action` to be taken based on the input event

    - #### track

          void track​(Event<T> event)

      Tracks the event to later decide whether `evict(Event)` should evict it or not.
      Parameters:
        `event` - the input event to be tracked

    - #### getContext

          EvictionContext getContext()

      Returns the current context that is part of this eviction policy.
      Returns:
        the eviction context

    - #### setContext

          void setContext​(EvictionContext context)

      Sets a context in the eviction policy that can be used while evicting the events. E.g. For TimeEvictionPolicy, this could be used to set the reference timestamp.
      Parameters:
        `context` - the eviction context

    - #### reset

          void reset()

      Resets the eviction policy.

    - #### getState

          S getState()

      Return runtime state to be checkpointed by the framework for restoring the eviction policy in case of failures.
      Returns:
        the state

    - #### restoreState

          void restoreState​(S state)

      Restore the eviction policy from the state that was earlier checkpointed by the framework.
      Parameters:
        `state` - the state