|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectorg.apache.derby.impl.store.raw.data.BasePage
org.apache.derby.impl.store.raw.data.CachedPage
A base page that is cached. Since there are multiple page formats, use this abstract class to implement cacheable interface.
Field Summary | |
protected boolean |
alreadyReadPage
|
protected CacheManager |
containerCache
The container cache my container lives in. |
private long |
containerRowCount
|
protected BaseDataFileFactory |
dataFactory
My factory class. |
protected int |
initialRowCount
|
protected boolean |
isDirty
|
protected static int |
PAGE_FORMAT_ID_SIZE
|
protected CacheManager |
pageCache
The page cache I live in. |
protected byte[] |
pageData
|
protected boolean |
preDirty
|
static int |
WRITE_NO_SYNC
|
static int |
WRITE_SYNC
|
Fields inherited from class org.apache.derby.impl.store.raw.data.BasePage |
identity, inClean, INIT_PAGE_OVERFLOW, INIT_PAGE_REUSE, INIT_PAGE_REUSE_RECORDID, INVALID_PAGE, LOG_RECORD_DEFAULT, LOG_RECORD_FOR_PURGE, LOG_RECORD_FOR_UPDATE, owner, preLatch, VALID_PAGE |
Fields inherited from interface org.apache.derby.iapi.store.raw.Page |
DIAG_BYTES_FREE, DIAG_BYTES_RESERVED, DIAG_MAXROWSIZE, DIAG_MINIMUM_REC_SIZE, DIAG_MINROWSIZE, DIAG_NUMOVERFLOWED, DIAG_PAGE_SIZE, DIAG_PAGEOVERHEAD, DIAG_RESERVED_SPACE, DIAG_ROWSIZE, DIAG_SLOTTABLE_SIZE, FIRST_SLOT_NUMBER, INSERT_CONDITIONAL, INSERT_DEFAULT, INSERT_FOR_SPLIT, INSERT_INITIAL, INSERT_OVERFLOW, INSERT_UNDO_WITH_PURGE, INVALID_SLOT_NUMBER |
Constructor Summary | |
CachedPage()
|
Method Summary | |
private CachedPage |
changeInstanceTo(int fid,
PageKey newIdentity)
|
void |
clean(boolean remove)
Write the page to disk. |
void |
clearIdentity()
Put the object into the No Identity state. |
Cacheable |
createIdentity(java.lang.Object key,
java.lang.Object createParameter)
Find the container and then create the page in that container. |
protected abstract void |
createPage(PageKey id,
int[] args)
|
protected abstract void |
initFromData(FileContainer container,
PageKey id)
|
protected void |
initialize()
Initialize a CachedPage. |
boolean |
isActuallyDirty()
Has the page or its header been modified. |
boolean |
isDirty()
Has the page or its header been modified or about to be modified. |
void |
preDirty()
The page or its header is about to be modified. |
private void |
readPage(FileContainer myContainer,
PageKey newIdentity)
|
protected void |
releaseExclusive()
Ensure that container row count is updated if it is too out of sync |
void |
setContainerRowCount(long rowCount)
Set the number of rows in the container - the page uses this to decide whether it needs to aggressive set the container's row count when it changes. |
protected void |
setDirty()
|
void |
setFactory(BaseDataFileFactory factory)
|
Cacheable |
setIdentity(java.lang.Object key)
Find the container and then read the page from that container. |
protected void |
setPageArray(int pageSize)
|
protected abstract void |
usePageBuffer(byte[] buffer)
|
protected abstract void |
writeFormatId(PageKey identity)
|
protected abstract void |
writePage(PageKey id)
|
private void |
writePage(PageKey identity,
boolean syncMe)
|
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Methods inherited from interface org.apache.derby.iapi.services.cache.Cacheable |
getIdentity |
Methods inherited from interface org.apache.derby.iapi.store.raw.Page |
currentTimeStamp, equalTimeStamp, moveRecordForCompressAtSlot, setTimeStamp, spaceForInsert, spaceForInsert |
Methods inherited from interface org.apache.derby.iapi.services.io.TypedFormat |
getTypeFormatId |
Field Detail |
protected boolean alreadyReadPage
protected byte[] pageData
protected boolean isDirty
protected boolean preDirty
protected int initialRowCount
private long containerRowCount
protected CacheManager pageCache
protected CacheManager containerCache
protected BaseDataFileFactory dataFactory
protected static final int PAGE_FORMAT_ID_SIZE
public static final int WRITE_SYNC
public static final int WRITE_NO_SYNC
Constructor Detail |
public CachedPage()
Method Detail |
public final void setFactory(BaseDataFileFactory factory)
protected void initialize()
Initialize the object, ie. perform work normally perfomed in constructor. Called by setIdentity() and createIdentity().
initialize
in class BasePage
public Cacheable setIdentity(java.lang.Object key) throws StandardException
setIdentity
in interface Cacheable
StandardException
- Standard Cloudscape policy.Cacheable.setIdentity(java.lang.Object)
public Cacheable createIdentity(java.lang.Object key, java.lang.Object createParameter) throws StandardException
createIdentity
in interface Cacheable
StandardException
- Standard Cloudscape policy.Cacheable.createIdentity(java.lang.Object, java.lang.Object)
private CachedPage changeInstanceTo(int fid, PageKey newIdentity) throws StandardException
StandardException
public boolean isDirty()
isDirty
in interface Cacheable
Cacheable.isDirty()
public boolean isActuallyDirty()
public void preDirty()
preDirty
in class BasePage
protected void releaseExclusive()
releaseExclusive
in class BasePage
protected void setDirty()
public void clean(boolean remove) throws StandardException
MP - In a simple world we would just not allow clean until it held the latch on the page. But in order to fit into the cache system, we don't have enough state around to just make clean() latch the page while doing the I/O - but we still need someway to insure that no changes happen to the page while the I/O is taking place. Also someday it would be fine to allow reads of this page while the I/O was taking place. So first
clean
in interface Cacheable
StandardException
- Error writing the page.Cacheable.clean(boolean)
public void clearIdentity()
Cacheable
clearIdentity
in interface Cacheable
clearIdentity
in class BasePage
private void readPage(FileContainer myContainer, PageKey newIdentity) throws StandardException
StandardException
private void writePage(PageKey identity, boolean syncMe) throws StandardException
StandardException
public void setContainerRowCount(long rowCount)
BasePage
setContainerRowCount
in class BasePage
protected void setPageArray(int pageSize) throws StandardException
StandardException
protected abstract void usePageBuffer(byte[] buffer)
protected abstract void initFromData(FileContainer container, PageKey id) throws StandardException
StandardException
protected abstract void createPage(PageKey id, int[] args) throws StandardException
StandardException
protected abstract void writePage(PageKey id) throws StandardException
StandardException
protected abstract void writeFormatId(PageKey identity) throws StandardException
StandardException
|
Built on Mon 2007-06-04 09:58:47+0400, from revision ??? | |||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |