00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #ifndef Fennel_CacheAccessor_Included
00025 #define Fennel_CacheAccessor_Included
00026
00027 #include <boost/utility.hpp>
00028
00029 FENNEL_BEGIN_NAMESPACE
00030
00031 class CachePage;
00032 class MappedPageListener;
00033
00041 class FENNEL_CACHE_EXPORT CacheAccessor : public boost::noncopyable
00042 {
00043 public:
00044 virtual ~CacheAccessor();
00045
00106 virtual CachePage *lockPage(
00107 BlockId blockId,
00108 LockMode lockMode,
00109 bool readIfUnmapped = true,
00110 MappedPageListener *pMappedPageListener = NULL,
00111 TxnId txnId = IMPLICIT_TXN_ID) = 0;
00112
00124 virtual void unlockPage(
00125 CachePage &page,
00126 LockMode lockMode,
00127 TxnId txnId = IMPLICIT_TXN_ID) = 0;
00128
00136 virtual void discardPage(BlockId blockId) = 0;
00137
00150 virtual bool prefetchPage(
00151 BlockId blockId,
00152 MappedPageListener *pMappedPageListener = NULL) = 0;
00153
00166 virtual void prefetchBatch(
00167 BlockId blockId,uint nPages,
00168 MappedPageListener *pMappedPageListener = NULL) = 0;
00169
00181 virtual void flushPage(CachePage &page,bool async) = 0;
00182
00190 virtual void nicePage(CachePage &page) = 0;
00191
00195 virtual uint getMaxLockedPages() = 0;
00196
00203 virtual void setMaxLockedPages(uint nPages) = 0;
00204
00208 virtual SharedCache getCache() = 0;
00209
00217 virtual void setTxnId(TxnId txnId) = 0;
00218
00222 virtual TxnId getTxnId() const = 0;
00223
00235 virtual void getPrefetchParams(
00236 uint &prefetchPagesMax,
00237 uint &prefetchThrottleRate) = 0;
00238 };
00239
00240 FENNEL_END_NAMESPACE
00241
00242 #endif
00243
00244