public abstract class AbstractDataPageIO<T extends Storable> extends PageIO
| Modifier and Type | Class and Description |
|---|---|
static interface |
AbstractDataPageIO.CC<T>
Defines closure interface for applying computations to data page items.
|
| Modifier and Type | Field and Description |
|---|---|
static int |
ITEMS_OFF |
static int |
MIN_DATA_PAGE_OVERHEAD |
COMMON_HEADER_END, CRC_OFF, MAX_PAYLOAD_SIZE, PAGE_ID_OFF, ROTATED_ID_PART_OFF, T_BPLUS_META, T_CACHE_ID_AWARE_DATA_REF_INNER, T_CACHE_ID_AWARE_DATA_REF_LEAF, T_CACHE_ID_AWARE_PENDING_REF_INNER, T_CACHE_ID_AWARE_PENDING_REF_LEAF, T_CACHE_ID_DATA_REF_MVCC_INNER, T_CACHE_ID_DATA_REF_MVCC_LEAF, T_DATA, T_DATA_METASTORAGE, T_DATA_REF_INNER, T_DATA_REF_LEAF, T_DATA_REF_METASTORAGE_INNER, T_DATA_REF_METASTORAGE_LEAF, T_DATA_REF_MVCC_INNER, T_DATA_REF_MVCC_LEAF, T_H2_EX_REF_INNER_END, T_H2_EX_REF_INNER_START, T_H2_EX_REF_LEAF_END, T_H2_EX_REF_LEAF_START, T_H2_EX_REF_MVCC_INNER_END, T_H2_EX_REF_MVCC_INNER_START, T_H2_EX_REF_MVCC_LEAF_END, T_H2_EX_REF_MVCC_LEAF_START, T_H2_MVCC_REF_INNER, T_H2_MVCC_REF_LEAF, T_H2_REF_INNER, T_H2_REF_LEAF, T_META, T_METASTORE_INNER, T_METASTORE_LEAF, T_PAGE_LIST_META, T_PAGE_LIST_NODE, T_PAGE_UPDATE_TRACKING, T_PART_CNTRS, T_PART_META, T_PENDING_REF_INNER, T_PENDING_REF_LEAF, T_TX_LOG_INNER, T_TX_LOG_LEAF, TYPE_OFF, VER_OFF| Modifier | Constructor and Description |
|---|---|
protected |
AbstractDataPageIO(int type,
int ver) |
| Modifier and Type | Method and Description |
|---|---|
void |
addRow(long pageAddr,
byte[] payload,
int pageSize)
Adds row to this data page and sets respective link to the given row object.
|
void |
addRow(long pageId,
long pageAddr,
T row,
int rowSize,
int pageSize)
Adds row to this data page and sets respective link to the given row object.
|
void |
addRowFragment(long pageId,
long pageAddr,
byte[] payload,
long lastLink,
int pageSize)
Adds this payload as a fragment to this data page.
|
int |
addRowFragment(PageMemory pageMem,
long pageId,
long pageAddr,
T row,
int written,
int rowSize,
int pageSize)
Adds maximum possible fragment of the given row to this data page and sets respective link to the row.
|
protected boolean |
checkIndex(int idx) |
<T> List<T> |
forAllItems(long pageAddr,
AbstractDataPageIO.CC<T> c) |
protected int |
getDataOffset(long pageAddr,
int itemId,
int pageSize) |
long |
getFreeListPageId(long pageAddr) |
int |
getFreeSpace(long pageAddr)
Free space refers to a "max row size (without any data page specific overhead) which is guaranteed to fit into
this data page".
|
int |
getPayloadOffset(long pageAddr,
int itemId,
int pageSize,
int reqLen) |
void |
initNewPage(long pageAddr,
long pageId,
int pageSize) |
boolean |
isEmpty(long pageAddr) |
protected boolean |
isFragmented(long pageAddr,
int dataOff) |
protected void |
printPageLayout(long pageAddr,
int pageSize,
GridStringBuilder b) |
DataPagePayload |
readPayload(long pageAddr,
int itemId,
int pageSize)
Sets position to start of actual fragment data and limit to it's end.
|
long |
removeRow(long pageAddr,
int itemId,
int pageSize) |
void |
setFreeListPageId(long pageAddr,
long freeListPageId) |
boolean |
updateRow(long pageAddr,
int itemId,
int pageSize,
byte[] payload,
T row,
int rowSize) |
protected abstract void |
writeFragmentData(T row,
ByteBuffer buf,
int rowOff,
int payloadSize)
Write row data fragment.
|
protected void |
writeRowData(long pageAddr,
int dataOff,
byte[] payload) |
protected abstract void |
writeRowData(long pageAddr,
int dataOff,
int payloadSize,
T row,
boolean newRow) |
getBPlusIO, getBPlusIO, getCrc, getCrc, getInnerVersions, getLeafVersions, getPageId, getPageId, getPageIO, getPageIO, getRotatedIdPart, getType, getType, getType, getVersion, getVersion, getVersion, isDataPageType, printPage, printPage, registerH2, registerH2ExtraInner, registerH2ExtraLeaf, registerTest, setCrc, setCrc, setPageId, setRotatedIdPart, setType, setVersion, toStringpublic static final int ITEMS_OFF
public static final int MIN_DATA_PAGE_OVERHEAD
protected AbstractDataPageIO(int type,
int ver)
type - Page type.ver - Page format version.public void initNewPage(long pageAddr,
long pageId,
int pageSize)
initNewPage in class PageIOpageAddr - Page address.pageId - Page ID.pageSize - Page size.EncryptionSpi.encryptedSize(int)public void setFreeListPageId(long pageAddr,
long freeListPageId)
pageAddr - Page address.freeListPageId - Free list page ID.public long getFreeListPageId(long pageAddr)
pageAddr - Page address.public int getFreeSpace(long pageAddr)
pageAddr - Page address.public boolean isEmpty(long pageAddr)
pageAddr - Page address.true If there is no useful data in this page.public <T> List<T> forAllItems(long pageAddr, AbstractDataPageIO.CC<T> c) throws IgniteCheckedException
T - Closure return type.pageAddr - Page address.c - Closure.IgniteCheckedException - In case of error in closure body.protected boolean checkIndex(int idx)
idx - Index.true If the index is valid.protected void printPageLayout(long pageAddr,
int pageSize,
GridStringBuilder b)
pageAddr - Page address.pageSize - Page size.b - B.protected int getDataOffset(long pageAddr,
int itemId,
int pageSize)
pageAddr - Page address.itemId - Fixed item ID (the index used for referencing an entry from the outside).pageSize - Page size.protected boolean isFragmented(long pageAddr,
int dataOff)
pageAddr - Page address.dataOff - Data offset.true If the data row is fragmented across multiple pages.public DataPagePayload readPayload(long pageAddr, int itemId, int pageSize)
pageAddr - Page address.itemId - Item to position on.pageSize - Page size.DataPagePayload object.public int getPayloadOffset(long pageAddr,
int itemId,
int pageSize,
int reqLen)
pageAddr - Page address.itemId - Item to position on.pageSize - Page size.reqLen - Required payload length.public boolean updateRow(long pageAddr,
int itemId,
int pageSize,
@Nullable
byte[] payload,
@Nullable
T row,
int rowSize)
throws IgniteCheckedException
pageAddr - Page address.itemId - Item ID.pageSize - Page size.payload - Row data.row - Row.rowSize - Row size.True if entry is not fragmented.IgniteCheckedException - If failed.public long removeRow(long pageAddr,
int itemId,
int pageSize)
throws IgniteCheckedException
pageAddr - Page address.itemId - Fixed item ID (the index used for referencing an entry from the outside).pageSize - Page size.0 if none.IgniteCheckedException - If failed.public void addRow(long pageId,
long pageAddr,
T row,
int rowSize,
int pageSize)
throws IgniteCheckedException
pageAddr - Page address.row - Data row.rowSize - Row size.pageSize - Page size.IgniteCheckedException - If failed.public void addRow(long pageAddr,
byte[] payload,
int pageSize)
throws IgniteCheckedException
pageAddr - Page address.payload - Payload.pageSize - Page size.IgniteCheckedException - If failed.public int addRowFragment(PageMemory pageMem, long pageId, long pageAddr, T row, int written, int rowSize, int pageSize) throws IgniteCheckedException
pageMem - Page memory.pageId - Page ID to use to construct a link.pageAddr - Page address.row - Data row.written - Number of bytes of row size that was already written.rowSize - Row size.pageSize - Page size.IgniteCheckedException - If failed.public void addRowFragment(long pageId,
long pageAddr,
byte[] payload,
long lastLink,
int pageSize)
throws IgniteCheckedException
pageId - Page ID to use to construct a link.pageAddr - Page address.payload - Payload bytes.lastLink - Link to the previous written fragment (link to the tail).pageSize - Page size.IgniteCheckedException - If failed.protected abstract void writeFragmentData(T row, ByteBuffer buf, int rowOff, int payloadSize) throws IgniteCheckedException
row - Row.buf - Byte buffer.rowOff - Offset in row data bytes.payloadSize - Data length that should be written in a fragment.IgniteCheckedException - If failed.protected abstract void writeRowData(long pageAddr,
int dataOff,
int payloadSize,
T row,
boolean newRow)
throws IgniteCheckedException
pageAddr - Page address.dataOff - Data offset.payloadSize - Payload size.row - Data row.newRow - False if existing cache entry is updated, in this case skip key data write.IgniteCheckedException - If failed.protected void writeRowData(long pageAddr,
int dataOff,
byte[] payload)
pageAddr - Page address.dataOff - Data offset.payload - Payload
Follow @ApacheIgnite
Ignite Database and Caching Platform : ver. 2.7.5 Release Date : June 4 2019