DurableObjectCache< _DataType > Class Template Reference

#include <DurableObjectCache.h>

List of all members.


Detailed Description

template<typename _DataType>
class DurableObjectCache< _DataType >

Definition at line 45 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 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 ()
 Accessors.
size_t count ()
 Accessors.
size_t live ()
 Accessors.
int hits ()
 Accessors.
int misses ()
 Accessors.
int evictions ()
 Accessors.

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)
 
Returns:
Whether or not the added item of size puts the cache over the capacity.

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...


Member Typedef Documentation

template<typename _DataType>
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 144 of file DurableObjectCache.h.

template<typename _DataType>
typedef std::pair<typename CacheTable::iterator, bool> DurableObjectCache< _DataType >::CacheInsertRet [protected]

Definition at line 168 of file DurableObjectCache.h.


Member Enumeration Documentation

template<typename _DataType>
enum DurableObjectCache::CachePolicy_t

Enumerator:
CAP_BY_SIZE 
CAP_BY_COUNT 

Definition at line 47 of file DurableObjectCache.h.


Constructor & Destructor Documentation

template<typename _DataType>
DurableObjectCache< _DataType >::DurableObjectCache ( const char *  logpath,
size_t  capacity,
CachePolicy_t  policy = CAP_BY_SIZE 
)

Constructor.

template<typename _DataType>
DurableObjectCache< _DataType >::~DurableObjectCache (  ) 

Destructor.


Member Function Documentation

template<typename _DataType>
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.

template<typename _DataType>
int DurableObjectCache< _DataType >::get ( const SerializableObject &  key,
_DataType **  data 
)

Look up a given object in the cache.

template<typename _DataType>
bool DurableObjectCache< _DataType >::is_live ( const SerializableObject &  key  ) 

Return whether or not the key is currently live in in the cache.

template<typename _DataType>
int DurableObjectCache< _DataType >::release ( const SerializableObject &  key,
const _DataType *  data 
)

Release the given object, making it eligible for eviction.

template<typename _DataType>
int DurableObjectCache< _DataType >::del ( const SerializableObject &  key  ) 

Forcibly remove an object from the cache and delete it.

template<typename _DataType>
int DurableObjectCache< _DataType >::remove ( const SerializableObject &  key,
const _DataType *  data 
)

Remove the given entry from the cache but don't delete it.

template<typename _DataType>
size_t DurableObjectCache< _DataType >::flush (  ) 

Flush all evictable (i.e.

not live) objects from the cache.

Returns:
the number of objects evicted

template<typename _DataType>
size_t DurableObjectCache< _DataType >::size (  )  [inline]

Accessors.

Definition at line 105 of file DurableObjectCache.h.

template<typename _DataType>
size_t DurableObjectCache< _DataType >::count (  )  [inline]

Accessors.

Definition at line 106 of file DurableObjectCache.h.

template<typename _DataType>
size_t DurableObjectCache< _DataType >::live (  )  [inline]

Accessors.

Definition at line 107 of file DurableObjectCache.h.

template<typename _DataType>
int DurableObjectCache< _DataType >::hits (  )  [inline]

Accessors.

Definition at line 108 of file DurableObjectCache.h.

template<typename _DataType>
int DurableObjectCache< _DataType >::misses (  )  [inline]

Accessors.

Definition at line 109 of file DurableObjectCache.h.

template<typename _DataType>
int DurableObjectCache< _DataType >::evictions (  )  [inline]

Accessors.

Definition at line 110 of file DurableObjectCache.h.

template<typename _DataType>
void DurableObjectCache< _DataType >::reset_stats (  )  [inline]

Reset the cache statistics.

Definition at line 116 of file DurableObjectCache.h.

template<typename _DataType>
void DurableObjectCache< _DataType >::get_cache_key ( std::string *  cache_key,
const SerializableObject &  key 
) [protected]

Build a std::string to index the hash map.

template<typename _DataType>
bool DurableObjectCache< _DataType >::is_over_capacity ( size_t  size  )  [protected]

Returns:
Whether or not the added item of size puts the cache over the capacity.

template<typename _DataType>
void DurableObjectCache< _DataType >::evict_last (  )  [protected]

Kick the least recently used element out of the cache.

template<typename _DataType>
iterator DurableObjectCache< _DataType >::begin (  )  [inline]

Return an iterator at the beginning of the cache.

Definition at line 217 of file DurableObjectCache.h.

template<typename _DataType>
iterator DurableObjectCache< _DataType >::end (  )  [inline]

Return an iterator at the end of the cache.

Definition at line 223 of file DurableObjectCache.h.


Member Data Documentation

template<typename _DataType>
size_t DurableObjectCache< _DataType >::size_ [protected]

The current size of the cache.

Definition at line 170 of file DurableObjectCache.h.

Referenced by DurableObjectCache< _BaseType >::size().

template<typename _DataType>
size_t DurableObjectCache< _DataType >::capacity_ [protected]

The maximum size of the cache.

Definition at line 171 of file DurableObjectCache.h.

template<typename _DataType>
int DurableObjectCache< _DataType >::hits_ [protected]

Number of times the cache hits.

Definition at line 172 of file DurableObjectCache.h.

Referenced by DurableObjectCache< _BaseType >::hits(), and DurableObjectCache< _BaseType >::reset_stats().

template<typename _DataType>
int DurableObjectCache< _DataType >::misses_ [protected]

Number of times the cache misses.

Definition at line 173 of file DurableObjectCache.h.

Referenced by DurableObjectCache< _BaseType >::misses(), and DurableObjectCache< _BaseType >::reset_stats().

template<typename _DataType>
int DurableObjectCache< _DataType >::evictions_ [protected]

Number of times the cache evicted an object.

Definition at line 174 of file DurableObjectCache.h.

Referenced by DurableObjectCache< _BaseType >::evictions(), and DurableObjectCache< _BaseType >::reset_stats().

template<typename _DataType>
CacheLRUList DurableObjectCache< _DataType >::lru_ [protected]

The LRU List of objects.

Definition at line 175 of file DurableObjectCache.h.

Referenced by DurableObjectCache< _BaseType >::live().

template<typename _DataType>
CacheTable DurableObjectCache< _DataType >::cache_ [protected]

The object cache table.

Definition at line 176 of file DurableObjectCache.h.

Referenced by DurableObjectCache< _BaseType >::begin(), DurableObjectCache< _BaseType >::count(), DurableObjectCache< _BaseType >::end(), and DurableObjectCache< _BaseType >::live().

template<typename _DataType>
SpinLock* DurableObjectCache< _DataType >::lock_ [protected]

Lock to protect the in-memory cache.

Definition at line 177 of file DurableObjectCache.h.

template<typename _DataType>
CachePolicy_t DurableObjectCache< _DataType >::policy_ [protected]

Cache policy (see enum above).

Definition at line 178 of file DurableObjectCache.h.


The documentation for this class was generated from the following file:
Generated on Fri Dec 22 14:48:03 2006 for DTN Reference Implementation by  doxygen 1.5.1