Fennel: /home/pub/open/dev/fennel/cache/CacheAccessor.h Source File (original) (raw)
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