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_DelegatingCacheAccessor_Included
00025 #define Fennel_DelegatingCacheAccessor_Included
00026 
00027 #include "fennel/cache/CacheAccessor.h"
00028 
00029 FENNEL_BEGIN_NAMESPACE
00030 
00036 class FENNEL_CACHE_EXPORT DelegatingCacheAccessor : public CacheAccessor
00037 {
00038     SharedCacheAccessor pDelegate;
00039 
00040 public:
00046     explicit DelegatingCacheAccessor(
00047         SharedCacheAccessor pDelegate);
00048 
00049     
00050     virtual CachePage *lockPage(
00051         BlockId blockId,
00052         LockMode lockMode,
00053         bool readIfUnmapped = true,
00054         MappedPageListener *pMappedPageListener = NULL,
00055         TxnId txnId = IMPLICIT_TXN_ID);
00056     virtual void unlockPage(
00057         CachePage &page,LockMode lockMode,TxnId txnId = IMPLICIT_TXN_ID);
00058     virtual void discardPage(BlockId blockId);
00059     virtual bool prefetchPage(
00060         BlockId blockId,
00061         MappedPageListener *pMappedPageListener = NULL);
00062     virtual void prefetchBatch(
00063         BlockId blockId,uint nPages,
00064         MappedPageListener *pMappedPageListener = NULL);
00065     virtual void flushPage(CachePage &page,bool async);
00066     virtual void nicePage(CachePage &page);
00067     virtual SharedCache getCache();
00068     virtual uint getMaxLockedPages();
00069     virtual void setMaxLockedPages(uint nPages);
00070     virtual void setTxnId(TxnId txnId);
00071     virtual TxnId getTxnId() const;
00072     virtual void getPrefetchParams(
00073         uint &prefetchPagesMax,
00074         uint &prefetchThrottleRate);
00075 
00076 };
00077 
00078 FENNEL_END_NAMESPACE
00079 
00080 #endif
00081 
00082