Dynalib Utils
Public Member Functions | Protected Attributes | List of all members
DynaCache< T > Class Template Reference

#include <DynaCache.h>

Inheritance diagram for DynaCache< T >:
Inheritance graph
[legend]
Collaboration diagram for DynaCache< T >:
Collaboration graph
[legend]

Public Member Functions

 DynaCache ()
 
virtual ~DynaCache ()
 
 DynaCache (const DynaCache< T > &other)
 
DynaCache< T > * copy () override
 
void setAutoTouch (bool autoTouch)
 
bool isAutoTouch ()
 
void resetStats ()
 
void clear ()
 
bool isEmpty ()
 
bool isFull ()
 
bool isDirty ()
 
int getMaxPages ()
 
int getPageCount ()
 
int getDirtyPageCount ()
 
DynaLinkedList< T > * getPageList ()
 
void setMaxPages (int maxPages)
 
virtual void setListener (IDynaCacheListener< T > *listener)
 
void flush ()
 
virtual void flushPage (T *page)
 
void touchEntry (LinkedEntry< T > *entry)
 
T * getNewPage ()
 
LinkedEntry< T > * addNewPage (T *page)
 
virtual T * getPageForRemoval (LinkedEntry< T > *entry)
 
LinkedEntry< T > * useLastPage (Index keyValue)
 
LinkedEntry< T > * useLastPage (T *newPage)
 
void removePage (Index keyValue)
 
void removeLastPage ()
 
virtual void purgePages (double removePercent=0.80)
 
LinkedEntry< T > * findPageEntry (Index keyValue)
 
LinkedEntry< T > * getPageEntry (Index keyValue)
 
LinkedEntry< T > * putPageEntry (Index keyValue)
 
LinkedEntry< T > * putPageEntry (T *page)
 
T * findPage (Index keyValue)
 
T * getPage (Index keyValue)
 
T * putPage (Index keyValue)
 
T * putPage (T *page)
 
void printStatReport (String &name)
 
- Public Member Functions inherited from ICopyable< DynaCache< T > >
 ICopyable ()=default
 
virtual ~ICopyable ()=default
 

Protected Attributes

int _maxPages = 0
 
DynaLinkedList< T > * _pageList = nullptr
 
DynaHashMap< Index, LinkedEntry< T > > * _pageMap = nullptr
 
IDynaCacheListener< T > * _listener = nullptr
 
long _pageFlushes = 0
 
long _pageReplacements = 0
 
long _pageAccesses = 0
 

Constructor & Destructor Documentation

◆ DynaCache() [1/2]

template<class T >
DynaCache< T >::DynaCache ( )

◆ ~DynaCache()

template<class T >
DynaCache< T >::~DynaCache ( )
virtual

◆ DynaCache() [2/2]

template<class T >
DynaCache< T >::DynaCache ( const DynaCache< T > &  other)

Member Function Documentation

◆ addNewPage()

template<class T >
LinkedEntry< T > * DynaCache< T >::addNewPage ( T *  page)

◆ clear()

template<class T >
void DynaCache< T >::clear ( )

◆ copy()

template<class T >
DynaCache< T > * DynaCache< T >::copy ( )
overridevirtual

◆ findPage()

template<class T >
T * DynaCache< T >::findPage ( Index  keyValue)

◆ findPageEntry()

template<class T >
LinkedEntry< T > * DynaCache< T >::findPageEntry ( Index  keyValue)

◆ flush()

template<class T >
void DynaCache< T >::flush ( )

◆ flushPage()

template<class T >
void DynaCache< T >::flushPage ( T *  page)
virtual

Reimplemented in DynaBufferCache< T >.

◆ getDirtyPageCount()

template<class T >
int DynaCache< T >::getDirtyPageCount ( )

◆ getMaxPages()

template<class T >
int DynaCache< T >::getMaxPages ( )

◆ getNewPage()

template<class T >
T * DynaCache< T >::getNewPage ( )

◆ getPage()

template<class T >
T * DynaCache< T >::getPage ( Index  keyValue)

◆ getPageCount()

template<class T >
int DynaCache< T >::getPageCount ( )

◆ getPageEntry()

template<class T >
LinkedEntry< T > * DynaCache< T >::getPageEntry ( Index  keyValue)

◆ getPageForRemoval()

template<class T >
T * DynaCache< T >::getPageForRemoval ( LinkedEntry< T > *  entry)
virtual

Reimplemented in DynaBufferCache< T >.

◆ getPageList()

template<class T >
DynaLinkedList< T > * DynaCache< T >::getPageList ( )

◆ isAutoTouch()

template<class T >
bool DynaCache< T >::isAutoTouch ( )

◆ isDirty()

template<class T >
bool DynaCache< T >::isDirty ( )

◆ isEmpty()

template<class T >
bool DynaCache< T >::isEmpty ( )

◆ isFull()

template<class T >
bool DynaCache< T >::isFull ( )

◆ printStatReport()

template<class T >
void DynaCache< T >::printStatReport ( String name)

◆ purgePages()

template<class T >
void DynaCache< T >::purgePages ( double  removePercent = 0.80)
virtual

◆ putPage() [1/2]

template<class T >
T * DynaCache< T >::putPage ( Index  keyValue)

◆ putPage() [2/2]

template<class T >
T * DynaCache< T >::putPage ( T *  page)

◆ putPageEntry() [1/2]

template<class T >
LinkedEntry< T > * DynaCache< T >::putPageEntry ( Index  keyValue)

◆ putPageEntry() [2/2]

template<class T >
LinkedEntry< T > * DynaCache< T >::putPageEntry ( T *  page)

◆ removeLastPage()

template<class T >
void DynaCache< T >::removeLastPage ( )

◆ removePage()

template<class T >
void DynaCache< T >::removePage ( Index  keyValue)

◆ resetStats()

template<class T >
void DynaCache< T >::resetStats ( )

◆ setAutoTouch()

template<class T >
void DynaCache< T >::setAutoTouch ( bool  autoTouch)

◆ setListener()

template<class T >
void DynaCache< T >::setListener ( IDynaCacheListener< T > *  listener)
virtual

Reimplemented in DynaBufferCache< T >.

◆ setMaxPages()

template<class T >
void DynaCache< T >::setMaxPages ( int  maxPages)

◆ touchEntry()

template<class T >
void DynaCache< T >::touchEntry ( LinkedEntry< T > *  entry)

◆ useLastPage() [1/2]

template<class T >
LinkedEntry< T > * DynaCache< T >::useLastPage ( Index  keyValue)

This method reuses the "page" object inside the list Entry, so we don't delete it

◆ useLastPage() [2/2]

template<class T >
LinkedEntry< T > * DynaCache< T >::useLastPage ( T *  newPage)

Member Data Documentation

◆ _listener

template<class T>
IDynaCacheListener<T>* DynaCache< T >::_listener = nullptr
protected

◆ _maxPages

template<class T>
int DynaCache< T >::_maxPages = 0
protected

◆ _pageAccesses

template<class T>
long DynaCache< T >::_pageAccesses = 0
protected

◆ _pageFlushes

template<class T>
long DynaCache< T >::_pageFlushes = 0
protected

◆ _pageList

template<class T>
DynaLinkedList<T>* DynaCache< T >::_pageList = nullptr
protected

◆ _pageMap

template<class T>
DynaHashMap<Index, LinkedEntry<T> >* DynaCache< T >::_pageMap = nullptr
protected

◆ _pageReplacements

template<class T>
long DynaCache< T >::_pageReplacements = 0
protected

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