Sirikata
|
Handles locking, and also stores a map that can be used both by the CachePolicy, and by the CacheLayer. More...
#include <CacheMap.hpp>
Classes | |
class | read_iterator |
A read-only iterator. More... | |
class | write_iterator |
A read-write iterator. More... | |
Public Types | |
typedef CacheLayer::CacheEntry * | CacheData |
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::Data * | PolicyData |
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 |
CacheLayer * | mOwner |
CachePolicy * | mPolicy |
Friends | |
class | read_iterator |
class | write_iterator |
Handles locking, and also stores a map that can be used both by the CachePolicy, and by the CacheLayer.
typedef std::map<Fingerprint, MapEntry> Sirikata::Transfer::CacheMap::MapClass [private] |
typedef std::pair<CacheData, std::pair<PolicyData, cache_usize_type> > Sirikata::Transfer::CacheMap::MapEntry [private] |
typedef CachePolicy::Data* Sirikata::Transfer::CacheMap::PolicyData [private] |
Sirikata::Transfer::CacheMap::CacheMap | ( | CacheLayer * | owner, |
CachePolicy * | policy | ||
) | [inline] |
Sirikata::Transfer::CacheMap::~CacheMap | ( | ) | [inline] |
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().
required | The space required for the new entry. |
writer | Write iterator used to process deletions. |
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] |
References mOwner.
Referenced by Sirikata::Transfer::DiskCacheLayer::DiskCacheLayer(), and Sirikata::Transfer::MemoryCacheLayer::MemoryCacheLayer().
friend class read_iterator [friend] |
friend class write_iterator [friend] |
MapClass Sirikata::Transfer::CacheMap::mMap [private] |
boost::shared_mutex Sirikata::Transfer::CacheMap::mMapLock [private] |
CacheLayer* Sirikata::Transfer::CacheMap::mOwner [private] |
Referenced by destroyCacheLayerEntry(), and setOwner().
CachePolicy* Sirikata::Transfer::CacheMap::mPolicy [private] |
Referenced by alloc(), Sirikata::Transfer::CacheMap::write_iterator::erase(), Sirikata::Transfer::CacheMap::write_iterator::eraseAll(), Sirikata::Transfer::CacheMap::write_iterator::insert(), Sirikata::Transfer::CacheMap::write_iterator::update(), Sirikata::Transfer::CacheMap::write_iterator::use(), and Sirikata::Transfer::CacheMap::read_iterator::use().