#include <DurableObjectCache.h>
Definition at line 26 of file DurableObjectCache.h.
Public Types | |
enum | CachePolicy_t { CAP_BY_SIZE, CAP_BY_COUNT } |
Public Member Functions | |
DurableObjectCache (const char *logpath, size_t capacity, CachePolicy_t policy=CAP_BY_SIZE) | |
Constructor. | |
~DurableObjectCache () | |
Destructor. | |
int | put (const SerializableObject &key, const _DataType *data, int flags) |
Add a new object to the cache, initially putting it on the live object list. | |
int | get (const SerializableObject &key, _DataType **data) |
Look up a given object in the cache. | |
bool | is_live (const SerializableObject &key) |
Return whether or not the key is currently live in in the cache. | |
int | release (const SerializableObject &key, const _DataType *data) |
Release the given object, making it eligible for eviction. | |
int | del (const SerializableObject &key) |
Forcibly remove an object from the cache and delete it. | |
int | remove (const SerializableObject &key, const _DataType *data) |
Remove the given entry from the cache but don't delete it. | |
size_t | flush () |
Flush all evictable (i.e. | |
void | get_stats (StringBuffer *buf) |
Get a string representation of the stats in the given string buffer. | |
void | reset_stats () |
Reset the cache statistics. | |
iterator | begin () |
Return an iterator at the beginning of the cache. | |
iterator | end () |
Return an iterator at the end of the cache. | |
size_t | size () const |
size_t | count () const |
size_t | live () const |
int | hits () const |
int | misses () const |
int | evictions () const |
Protected Types | |
typedef LRUList < std::string > | CacheLRUList |
The LRU list just stores the key for the object in the main cache table. | |
typedef std::pair < typename CacheTable::iterator, bool > | CacheInsertRet |
Protected Member Functions | |
void | get_cache_key (std::string *cache_key, const SerializableObject &key) |
Build a std::string to index the hash map. | |
bool | is_over_capacity (size_t size) |
| |
void | evict_last () |
Kick the least recently used element out of the cache. | |
Protected Attributes | |
size_t | size_ |
The current size of the cache. | |
size_t | capacity_ |
The maximum size of the cache. | |
int | hits_ |
Number of times the cache hits. | |
int | misses_ |
Number of times the cache misses. | |
int | evictions_ |
Number of times the cache evicted an object. | |
CacheLRUList | lru_ |
The LRU List of objects. | |
CacheTable | cache_ |
The object cache table. | |
SpinLock * | lock_ |
Lock to protect the in-memory cache. | |
CachePolicy_t | policy_ |
Cache policy (see enum above). | |
Classes | |
struct | CacheElement |
Type for the cache table elements. More... | |
class | CacheTable |
The cache table. More... | |
class | iterator |
Class to represent a cache iterator and still hide the implementation details of the cache table structure. More... |
typedef LRUList<std::string> DurableObjectCache< _DataType >::CacheLRUList [protected] |
The LRU list just stores the key for the object in the main cache table.
Definition at line 130 of file DurableObjectCache.h.
typedef std::pair<typename CacheTable::iterator, bool> DurableObjectCache< _DataType >::CacheInsertRet [protected] |
Definition at line 154 of file DurableObjectCache.h.
enum DurableObjectCache::CachePolicy_t |
DurableObjectCache< _DataType >::DurableObjectCache | ( | const char * | logpath, | |
size_t | capacity, | |||
CachePolicy_t | policy = CAP_BY_SIZE | |||
) |
Constructor.
DurableObjectCache< _DataType >::~DurableObjectCache | ( | ) |
Destructor.
int DurableObjectCache< _DataType >::put | ( | const SerializableObject & | key, | |
const _DataType * | data, | |||
int | flags | |||
) |
Add a new object to the cache, initially putting it on the live object list.
Note that this may cause some other object(s) to be evicted from the cache.
int DurableObjectCache< _DataType >::get | ( | const SerializableObject & | key, | |
_DataType ** | data | |||
) |
Look up a given object in the cache.
bool DurableObjectCache< _DataType >::is_live | ( | const SerializableObject & | key | ) |
Return whether or not the key is currently live in in the cache.
int DurableObjectCache< _DataType >::release | ( | const SerializableObject & | key, | |
const _DataType * | data | |||
) |
Release the given object, making it eligible for eviction.
int DurableObjectCache< _DataType >::del | ( | const SerializableObject & | key | ) |
Forcibly remove an object from the cache and delete it.
int DurableObjectCache< _DataType >::remove | ( | const SerializableObject & | key, | |
const _DataType * | data | |||
) |
Remove the given entry from the cache but don't delete it.
size_t DurableObjectCache< _DataType >::flush | ( | ) |
Flush all evictable (i.e.
not live) objects from the cache.
size_t DurableObjectCache< _DataType >::size | ( | ) | const [inline] |
Accessors
Definition at line 86 of file DurableObjectCache.h.
size_t DurableObjectCache< _DataType >::count | ( | ) | const [inline] |
Accessors
Definition at line 87 of file DurableObjectCache.h.
size_t DurableObjectCache< _DataType >::live | ( | ) | const [inline] |
Accessors
Definition at line 88 of file DurableObjectCache.h.
int DurableObjectCache< _DataType >::hits | ( | ) | const [inline] |
Accessors
Definition at line 89 of file DurableObjectCache.h.
int DurableObjectCache< _DataType >::misses | ( | ) | const [inline] |
Accessors
Definition at line 90 of file DurableObjectCache.h.
int DurableObjectCache< _DataType >::evictions | ( | ) | const [inline] |
Accessors
Definition at line 91 of file DurableObjectCache.h.
void DurableObjectCache< _DataType >::get_stats | ( | StringBuffer * | buf | ) |
Get a string representation of the stats in the given string buffer.
void DurableObjectCache< _DataType >::reset_stats | ( | ) | [inline] |
void DurableObjectCache< _DataType >::get_cache_key | ( | std::string * | cache_key, | |
const SerializableObject & | key | |||
) | [protected] |
Build a std::string to index the hash map.
bool DurableObjectCache< _DataType >::is_over_capacity | ( | size_t | size | ) | [protected] |
void DurableObjectCache< _DataType >::evict_last | ( | ) | [protected] |
Kick the least recently used element out of the cache.
iterator DurableObjectCache< _DataType >::begin | ( | ) | [inline] |
Return an iterator at the beginning of the cache.
Definition at line 203 of file DurableObjectCache.h.
iterator DurableObjectCache< _DataType >::end | ( | ) | [inline] |
size_t DurableObjectCache< _DataType >::size_ [protected] |
The current size of the cache.
Definition at line 156 of file DurableObjectCache.h.
Referenced by DurableObjectCache< _BaseType >::size().
size_t DurableObjectCache< _DataType >::capacity_ [protected] |
int DurableObjectCache< _DataType >::hits_ [protected] |
Number of times the cache hits.
Definition at line 158 of file DurableObjectCache.h.
Referenced by DurableObjectCache< _BaseType >::hits(), and DurableObjectCache< _BaseType >::reset_stats().
int DurableObjectCache< _DataType >::misses_ [protected] |
Number of times the cache misses.
Definition at line 159 of file DurableObjectCache.h.
Referenced by DurableObjectCache< _BaseType >::misses(), and DurableObjectCache< _BaseType >::reset_stats().
int DurableObjectCache< _DataType >::evictions_ [protected] |
Number of times the cache evicted an object.
Definition at line 160 of file DurableObjectCache.h.
Referenced by DurableObjectCache< _BaseType >::evictions(), and DurableObjectCache< _BaseType >::reset_stats().
CacheLRUList DurableObjectCache< _DataType >::lru_ [protected] |
The LRU List of objects.
Definition at line 161 of file DurableObjectCache.h.
Referenced by DurableObjectCache< _BaseType >::live().
CacheTable DurableObjectCache< _DataType >::cache_ [protected] |
The object cache table.
Definition at line 162 of file DurableObjectCache.h.
Referenced by DurableObjectCache< _BaseType >::begin(), DurableObjectCache< _BaseType >::count(), DurableObjectCache< _BaseType >::end(), and DurableObjectCache< _BaseType >::live().
SpinLock* DurableObjectCache< _DataType >::lock_ [protected] |
CachePolicy_t DurableObjectCache< _DataType >::policy_ [protected] |