Class PagesListNodeIO
- java.lang.Object
-
- org.apache.ignite.internal.processors.cache.persistence.tree.io.PageIO
-
- org.apache.ignite.internal.processors.cache.persistence.freelist.io.PagesListNodeIO
-
- All Implemented Interfaces:
CompactablePageIO
public class PagesListNodeIO extends PageIO implements CompactablePageIO
TODO optimize: now we have slowremovePage(long, long)
-
-
Field Summary
Fields Modifier and Type Field Description static IOVersions<PagesListNodeIO>VERSIONS-
Fields inherited from class org.apache.ignite.internal.processors.cache.persistence.tree.io.PageIO
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_DATA, T_DATA_METASTORAGE, T_DATA_PART, T_DATA_REF_INNER, T_DATA_REF_LEAF, T_DATA_REF_METASTORAGE_INNER, T_DATA_REF_METASTORAGE_LEAF, T_DEFRAG_LINK_MAPPING_INNER, T_DEFRAG_LINK_MAPPING_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_REF_INNER, T_H2_REF_LEAF, T_MARKER_PAGE, 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, TYPE_OFF, VER_OFF
-
-
Constructor Summary
Constructors Modifier Constructor Description protectedPagesListNodeIO(int ver)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description intaddPage(long pageAddr, long pageId, int pageSize)Adds page to the end of pages list.voidcompactPage(ByteBuffer page, ByteBuffer out, int pageSize)Compacts page contents to the output buffer.longgetAt(long pageAddr, int idx)intgetCapacity(int pageSize)Gets capacity of this page in items.intgetCount(long pageAddr)Gets total count of entries in this page.intgetFreeSpace(int pageSize, long pageAddr)Count of bytes that is currently free in this page and possibly can be used to place additional payload.longgetNextId(long pageAddr)longgetPreviousId(long pageAddr)voidinitNewPage(long pageAddr, long pageId, int pageSize, PageMetrics metrics)booleanisEmpty(long pageAddr)protected voidprintPage(long addr, int pageSize, GridStringBuilder sb)booleanremovePage(long pageAddr, long dataPageId)Removes the given page ID from the pages list.voidrestorePage(ByteBuffer compactPage, int pageSize)Restores the original page in place.voidsetNextId(long pageAddr, long nextId)voidsetPreviousId(long pageAddr, long prevId)longtakeAnyPage(long pageAddr)Removes any page from the pages list.-
Methods inherited from class org.apache.ignite.internal.processors.cache.persistence.tree.io.PageIO
assertPageType, assertPageType, copyPage, deriveIndexPageType, getBPlusIO, getBPlusIO, getCompactedSize, getCompactedSize, getCompressedSize, getCompressedSize, getCompressionType, getCompressionType, getCrc, getCrc, getInnerVersions, getLeafVersions, getPageId, getPageId, getPageIO, getPageIO, getPageIO, getRotatedIdPart, getType, getType, getType, getVersion, getVersion, getVersion, isDataPageType, isIndexPage, printPage, registerH2, registerH2ExtraInner, registerH2ExtraLeaf, registerTest, registerTest, setCompactedSize, setCompressedSize, setCompressionType, setCrc, setCrc, setPageId, setRotatedIdPart, setType, setVersion, toString
-
-
-
-
Field Detail
-
VERSIONS
public static final IOVersions<PagesListNodeIO> VERSIONS
-
-
Method Detail
-
initNewPage
public void initNewPage(long pageAddr, long pageId, int pageSize, PageMetrics metrics)- Overrides:
initNewPagein classPageIO- Parameters:
pageAddr- Page address.pageId- Page ID.pageSize- Page size.metrics- Page metrics for tracking page allocation. Can benullif no tracking is required.- See Also:
EncryptionSpi.encryptedSize(int)
-
getNextId
public long getNextId(long pageAddr)
- Parameters:
pageAddr- Page address.- Returns:
- Next page ID.
-
setNextId
public void setNextId(long pageAddr, long nextId)- Parameters:
pageAddr- Page address.nextId- Next page ID.
-
getPreviousId
public long getPreviousId(long pageAddr)
- Parameters:
pageAddr- Page address.- Returns:
- Previous page ID.
-
setPreviousId
public void setPreviousId(long pageAddr, long prevId)- Parameters:
pageAddr- Page address.prevId- Previous page ID.
-
getCount
public int getCount(long pageAddr)
Gets total count of entries in this page. Does not change the buffer state.- Parameters:
pageAddr- Page address to get count from.- Returns:
- Total number of entries.
-
getCapacity
public int getCapacity(int pageSize)
Gets capacity of this page in items.- Parameters:
pageSize- Page size.- Returns:
- Capacity of this page in items.
-
getAt
public long getAt(long pageAddr, int idx)- Parameters:
pageAddr- Page address.idx- Item index.- Returns:
- Item at the given index.
-
addPage
public int addPage(long pageAddr, long pageId, int pageSize)Adds page to the end of pages list.- Parameters:
pageAddr- Page address.pageId- Page ID.pageSize- Page size.- Returns:
- Total number of items in this page.
-
takeAnyPage
public long takeAnyPage(long pageAddr)
Removes any page from the pages list.- Parameters:
pageAddr- Page address.- Returns:
- Removed page ID.
-
removePage
public boolean removePage(long pageAddr, long dataPageId)Removes the given page ID from the pages list.- Parameters:
pageAddr- Page address.dataPageId- Page ID to remove.- Returns:
trueif page was in the list and was removed,falseotherwise.
-
isEmpty
public boolean isEmpty(long pageAddr)
- Parameters:
pageAddr- Page address.- Returns:
Trueif there are no items in this page.
-
compactPage
public void compactPage(ByteBuffer page, ByteBuffer out, int pageSize)
Compacts page contents to the output buffer. Implementation must not change contents, position and limit of the original page buffer.- Specified by:
compactPagein interfaceCompactablePageIO- Parameters:
page- Page buffer.out- Output buffer.pageSize- Page size.
-
restorePage
public void restorePage(ByteBuffer compactPage, int pageSize)
Restores the original page in place.- Specified by:
restorePagein interfaceCompactablePageIO- Parameters:
compactPage- Compact page.pageSize- Page size.
-
printPage
protected void printPage(long addr, int pageSize, GridStringBuilder sb) throws IgniteCheckedException- Specified by:
printPagein classPageIO- Parameters:
addr- Address.pageSize- Page size.sb- Sb.- Throws:
IgniteCheckedException
-
getFreeSpace
public int getFreeSpace(int pageSize, long pageAddr)Count of bytes that is currently free in this page and possibly can be used to place additional payload.- Specified by:
getFreeSpacein classPageIO- Parameters:
pageSize- Page size.pageAddr- Page address.- Returns:
- Free space.
-
-