DelegatingCacheAccessor.h

Go to the documentation of this file.
00001 /*
00002 // $Id: //open/dev/fennel/cache/DelegatingCacheAccessor.h#13 $
00003 // Fennel is a library of data storage and processing components.
00004 // Copyright (C) 2005-2009 The Eigenbase Project
00005 // Copyright (C) 2005-2009 SQLstream, Inc.
00006 // Copyright (C) 2005-2009 LucidEra, Inc.
00007 // Portions Copyright (C) 1999-2009 John V. Sichi
00008 //
00009 // This program is free software; you can redistribute it and/or modify it
00010 // under the terms of the GNU General Public License as published by the Free
00011 // Software Foundation; either version 2 of the License, or (at your option)
00012 // any later version approved by The Eigenbase Project.
00013 //
00014 // This program is distributed in the hope that it will be useful,
00015 // but WITHOUT ANY WARRANTY; without even the implied warranty of
00016 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00017 // GNU General Public License for more details.
00018 //
00019 // You should have received a copy of the GNU General Public License
00020 // along with this program; if not, write to the Free Software
00021 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
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     // implement the CacheAccessor interface
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 // End DelegatingCacheAccessor.h

Generated on Mon Jun 22 04:00:13 2009 for Fennel by  doxygen 1.5.1