io.undertow.server.handlers.cache

## Class DirectBufferCache

- java.lang.Object
- - io.undertow.server.handlers.cache.DirectBufferCache

    public class DirectBufferCache
    extends Object

A non-blocking buffer cache where entries are indexed by a path and are made up of a subsequence of blocks in a fixed large direct buffer. An ideal application is a file system cache, where the path corresponds to a file location.

To reduce contention, entry allocation and eviction execute in a sampling fashion (entry hits modulo N). Eviction follows an LRU approach (oldest sampled entries are removed first) when the cache is out of capacity

In order to expedite reclamation, cache entries are reference counted as opposed to garbage collected.

Author:
  Jason T. Greene

### Nested Class Summary

Nested Classes
`static class` `DirectBufferCache.CacheEntry`

### Constructor Summary

Constructors
Constructor and Description
`DirectBufferCache(int sliceSize, int slicesPerPage, int maxMemory)`
`DirectBufferCache(int sliceSize, int slicesPerPage, int maxMemory, org.xnio.BufferAllocator<ByteBuffer> bufferAllocator)`
`DirectBufferCache(int sliceSize, int slicesPerPage, int maxMemory, org.xnio.BufferAllocator<ByteBuffer> bufferAllocator, int maxAge)`

### Method Summary

All Methods Instance Methods Concrete Methods
`DirectBufferCache.CacheEntry` `add(Object key, int size)`
`DirectBufferCache.CacheEntry` `add(Object key, int size, int maxAge)`
`DirectBufferCache.CacheEntry` `get(Object key)`
`Set<Object>` `getAllKeys()` Returns a set of all the keys in the cache.
`void` `remove(Object key)`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Constructor Detail

#### DirectBufferCache

    public DirectBufferCache(int sliceSize,
                             int slicesPerPage,
                             int maxMemory)

#### DirectBufferCache

    public DirectBufferCache(int sliceSize,
                             int slicesPerPage,
                             int maxMemory,
                             org.xnio.BufferAllocator<ByteBuffer> bufferAllocator)

#### DirectBufferCache

    public DirectBufferCache(int sliceSize,
                             int slicesPerPage,
                             int maxMemory,
                             org.xnio.BufferAllocator<ByteBuffer> bufferAllocator,
                             int maxAge)

### Method Detail

#### add

    public DirectBufferCache.CacheEntry add(Object key,
                                            int size)

#### add

    public DirectBufferCache.CacheEntry add(Object key,
                                            int size,
                                            int maxAge)

#### get

    public DirectBufferCache.CacheEntry get(Object key)

#### getAllKeys

    public Set<Object> getAllKeys()

Returns a set of all the keys in the cache. This is a copy of the key set at the time of method invocation.

Returns:
  all the keys in this cache

#### remove

    public void remove(Object key)