Sirikata
Classes | Public Types | Public Member Functions | Private Types | Private Member Functions | Private Attributes | Friends
Sirikata::Transfer::CacheMap Class Reference

Handles locking, and also stores a map that can be used both by the CachePolicy, and by the CacheLayer. More...

#include <CacheMap.hpp>

Inheritance diagram for Sirikata::Transfer::CacheMap:
Collaboration diagram for Sirikata::Transfer::CacheMap:

List of all members.

Classes

class  read_iterator
 A read-only iterator. More...
class  write_iterator
 A read-write iterator. More...

Public Types

typedef CacheLayer::CacheEntryCacheData

Public Member Functions

 CacheMap (CacheLayer *owner, CachePolicy *policy)
void setOwner (CacheLayer *owner)
 ~CacheMap ()
bool alloc (cache_usize_type required, write_iterator &writer)
 Allocates the requested number of bytes, and erases the appropriate set of entries using CachePolicy::allocateSpace().

Private Types

typedef CachePolicy::DataPolicyData
typedef std::pair< CacheData,
std::pair< PolicyData,
cache_usize_type > > 
MapEntry
typedef std::map< Fingerprint,
MapEntry
MapClass

Private Member Functions

void destroyCacheLayerEntry (const Fingerprint &id, const CacheData &data, cache_usize_type size)

Private Attributes

MapClass mMap
boost::shared_mutex mMapLock
CacheLayermOwner
CachePolicymPolicy

Friends

class read_iterator
class write_iterator

Detailed Description

Handles locking, and also stores a map that can be used both by the CachePolicy, and by the CacheLayer.


Member Typedef Documentation


Constructor & Destructor Documentation

Sirikata::Transfer::CacheMap::CacheMap ( CacheLayer owner,
CachePolicy policy 
) [inline]
Sirikata::Transfer::CacheMap::~CacheMap ( ) [inline]

Member Function Documentation

bool Sirikata::Transfer::CacheMap::alloc ( cache_usize_type  required,
write_iterator writer 
) [inline]

Allocates the requested number of bytes, and erases the appropriate set of entries using CachePolicy::allocateSpace().

Parameters:
requiredThe space required for the new entry.
writerWrite iterator used to process deletions.
Returns:
if the allocation was successful, or false if the entry is not to be cached.

References Sirikata::Transfer::CachePolicy::cachable(), Sirikata::Transfer::CacheMap::write_iterator::erase(), Sirikata::Transfer::CacheMap::write_iterator::find(), mPolicy, and Sirikata::Transfer::CachePolicy::nextItem().

Referenced by Sirikata::Transfer::MemoryCacheLayer::populateCache(), Sirikata::Transfer::DiskCacheLayer::unserialize(), and Sirikata::Transfer::DiskCacheLayer::workerThread().

void Sirikata::Transfer::CacheMap::destroyCacheLayerEntry ( const Fingerprint id,
const CacheData data,
cache_usize_type  size 
) [inline, private]
void Sirikata::Transfer::CacheMap::setOwner ( CacheLayer owner) [inline]

Friends And Related Function Documentation

friend class read_iterator [friend]
friend class write_iterator [friend]

Member Data Documentation

boost::shared_mutex Sirikata::Transfer::CacheMap::mMapLock [private]

Referenced by destroyCacheLayerEntry(), and setOwner().


The documentation for this class was generated from the following file: