Darwin  1.10(beta)
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
Classes | Public Member Functions | Static Public Attributes | Protected Types | Protected Member Functions | Protected Attributes | List of all members
drwnPersistentStorageBuffer< T > Class Template Reference

Provides buffered storage (delayed write-back) of objects with a drwnPersistentRecord interface. More...

Classes

class  _drwnRecordEntry
 

Public Member Functions

 drwnPersistentStorageBuffer (const char *fileStem, bool bCompressed=false)
 
size_t size () const
 returns number of records in the buffer
 
size_t memory () const
 returns memory used by in-memory records
 
const drwnPersistentStoragestorage () const
 returns a reference to the storage object
 
drwnSmartPointer< T > read (const string &key)
 returns a record from the in-memory buffer or disk storage
 
void write (const string &key, drwnSmartPointer< T > &p)
 writes a record to storage (the write is delayed until the record is removed from memory or flush is called)
 
void erase (const string &key)
 erases a record from storage (and memory)
 
void flush ()
 write all pending records to disk
 

Static Public Attributes

static size_t MAX_MEMORY = 1.0e9
 maximum number of bytes stored
 
static size_t MAX_RECORDS = 1000
 maximum number of records stored
 

Protected Types

typedef list< _drwnRecordEntry_drwnRecordList
 
typedef map< string, typename
_drwnRecordList::iterator > 
_drwnRecordRef
 

Protected Member Functions

void enforceLimits ()
 checks memory and count limits, writes and frees pending records if exceeded
 

Protected Attributes

drwnPersistentStorage _storage
 storage object
 
_drwnRecordRef _recref
 reference to records
 
_drwnRecordList _records
 cached records (in most-recently-used order)
 
size_t _memoryUsed
 current memory usage
 

Detailed Description

template<class T>
class drwnPersistentStorageBuffer< T >

Provides buffered storage (delayed write-back) of objects with a drwnPersistentRecord interface.

Records are removed in least-recently-used order.

Warning
The API for this class may change in future versions.
The class is not thread-safe.
Todo:
rename to drwnPersistentRecordBuffer

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