/** * @param row Row to set link to. * @param pageId Page ID. * @param itemId Item ID. */ private void setLinkByPageId(T row, long pageId, int itemId) { row.link(PageIdUtils.link(pageId, itemId)); }
/** * @param pageAddr Page address. * @param c Closure. * @param <T> Closure return type. * @return Collection of closure results for all items in page. * @throws IgniteCheckedException In case of error in closure body. */ public <T> List<T> forAllItems(long pageAddr, CC<T> c) throws IgniteCheckedException { long pageId = getPageId(pageAddr); int cnt = getDirectCount(pageAddr); List<T> res = new ArrayList<>(cnt); for (int i = 0; i < cnt; i++) { long link = PageIdUtils.link(pageId, i); res.add(c.apply(link)); } return res; }
/** * @throws Exception If failed. */ @Test public void testLinkConstruction() throws Exception { assertEquals(0x00FFFFFFFFFFFFFFL, PageIdUtils.link(0xFFFFFFFFFFFFFFL, 0)); assertEquals(0x01FFFFFFFFFFFFFFL, PageIdUtils.link(0xFFFFFFFFFFFFFFL, 1)); assertEquals(0x0000000000000000L, PageIdUtils.link(0, 0)); assertEquals(0x0100000000000000L, PageIdUtils.link(0, 1)); assertEquals(0xF000000000000000L, PageIdUtils.link(0, 0xF0)); assertEquals(0xF0FFFFFFFFFFFFFFL, PageIdUtils.link(0xFFFFFFFFFFFFFFL, 0xF0)); assertEquals(0xFE00000000000000L, PageIdUtils.link(0, 0xFE)); assertEquals(0xFEFFFFFFFFFFFFFFL, PageIdUtils.link(0xFFFFFFFFFFFFFFL, 0xFE)); assertEquals(0x0F00000000000000L, PageIdUtils.link(0, 0xF)); assertEquals(0x0FFFFFFFFFFFFFFFL, PageIdUtils.link(0xFFFFFFFFFFFFFFL, 0xF)); }
recycled = PageIdUtils.link(pageId, rotatedIdPart > MAX_ITEMID_NUM ? 1 : rotatedIdPart);
/** * @param row Row to set link to. * @param pageId Page ID. * @param itemId Item ID. */ private void setLinkByPageId(T row, long pageId, int itemId) { row.link(PageIdUtils.link(pageId, itemId)); }
/** * @param pageAddr Page address. * @param c Closure. * @param <T> Closure return type. * @return Collection of closure results for all items in page. * @throws IgniteCheckedException In case of error in closure body. */ public <T> List<T> forAllItems(long pageAddr, CC<T> c) throws IgniteCheckedException { long pageId = getPageId(pageAddr); int cnt = getDirectCount(pageAddr); List<T> res = new ArrayList<>(cnt); for (int i = 0; i < cnt; i++) { long link = PageIdUtils.link(pageId, i); res.add(c.apply(link)); } return res; }
recycled = PageIdUtils.link(pageId, rotatedIdPart > MAX_ITEMID_NUM ? 1 : rotatedIdPart);