CacheAccessor.h

Go to the documentation of this file.
00001 /*
00002 // $Id: //open/dev/fennel/cache/CacheAccessor.h#14 $
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_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 // End CacheAccessor.h

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