#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] |
1.5.3