/** * @param pageAddr Page address. * @param cnt Stored items count. */ private void setCount(long pageAddr, int cnt) { assert cnt >= 0 && cnt <= Short.MAX_VALUE : cnt; PageUtils.putShort(pageAddr, CNT_OFF, (short)cnt); }
/** * @param pageAddr Page address. * @param dataOff Entry data offset. * @param pageSize Page size. */ private void setFirstEntryOffset(long pageAddr, int dataOff, int pageSize) { assert dataOff >= ITEMS_OFF + ITEM_SIZE && dataOff <= pageSize : dataOff; PageUtils.putShort(pageAddr, FIRST_ENTRY_OFF, (short)dataOff); }
/** * Sets total count of entries in this page. Does not change the buffer state. * * @param pageAddr Page address to write to. * @param cnt Count. */ private void setCount(long pageAddr, int cnt) { assert cnt >= 0 && cnt <= Short.MAX_VALUE : cnt; PageUtils.putShort(pageAddr, CNT_OFF, (short)cnt); }
/** * @param pageAddr Page address. * @param cnt Stored items count. */ private void setCount(long pageAddr, int cnt) { assert cnt >= 0 && cnt <= Short.MAX_VALUE : cnt; PageUtils.putShort(pageAddr, CNT_OFF, (short)cnt); }
/** * @param pageAddr Page address. * @param idx Item index. * @param item Item. */ private void setItem(long pageAddr, int idx, short item) { PageUtils.putShort(pageAddr, itemOffset(idx), item); }
/** * @param pageAddr Page address. * @param size Offset size. */ public void setInlineSize(long pageAddr, int size) { if (getVersion() > 1) PageUtils.putShort(pageAddr, inlineSizeOff, (short)size); }
/** * @param pageAddr Page address. * @param cnt Count. */ public final void setCount(long pageAddr, int cnt) { assert cnt >= 0: cnt; PageUtils.putShort(pageAddr, CNT_OFF, (short)cnt); assert getCount(pageAddr) == cnt; }
/** * @param pageAddr Page address. * @param ver Version. */ protected static void setVersion(long pageAddr, int ver) { PageUtils.putShort(pageAddr, VER_OFF, (short)ver); assert getVersion(pageAddr) == ver; }
/** * @param pageAddr Page address. * @param dataOff Data offset. * @param payload Payload */ protected void writeRowData( long pageAddr, int dataOff, byte[] payload ) { PageUtils.putShort(pageAddr, dataOff, (short)payload.length); dataOff += 2; PageUtils.putBytes(pageAddr, dataOff, payload); }
/** * @param pageAddr Page address. * @param freeSpace Free space. * @param pageSize Page size. */ private void setRealFreeSpace(long pageAddr, int freeSpace, int pageSize) { assert freeSpace == actualFreeSpace(pageAddr, pageSize) : freeSpace + " != " + actualFreeSpace(pageAddr, pageSize); PageUtils.putShort(pageAddr, FREE_SPACE_OFF, (short)freeSpace); }
/** * @param pageAddr Page address. * @param type Type. */ public static void setType(long pageAddr, int type) { PageUtils.putShort(pageAddr, TYPE_OFF, (short)type); assert getType(pageAddr) == type : getType(pageAddr); }
/** {@inheritDoc} */ @Override public void storeByOffset(long pageAddr, int off, MetastorageSearchRow row) { assert row.link() != 0; PageUtils.putLong(pageAddr, off, row.link()); byte[] bytes = row.key().getBytes(); assert bytes.length <= MAX_KEY_LEN; PageUtils.putShort(pageAddr, off + 8, (short)bytes.length); PageUtils.putBytes(pageAddr, off + 10, bytes); }
/** {@inheritDoc} */ @Override public void storeByOffset(long pageAddr, int off, MetastorageSearchRow row) { assert row.link() != 0; PageUtils.putLong(pageAddr, off, row.link()); byte[] bytes = row.key().getBytes(); assert bytes.length <= MAX_KEY_LEN; PageUtils.putShort(pageAddr, off + 8, (short)bytes.length); PageUtils.putBytes(pageAddr, off + 10, bytes); }
/** {@inheritDoc} */ @Override protected void writeRowData( long pageAddr, int dataOff, int payloadSize, MetastorageDataRow row, boolean newRow ) throws IgniteCheckedException { long addr = pageAddr + dataOff; if (newRow) PageUtils.putShort(addr, 0, (short)payloadSize); PageUtils.putInt(addr, 2, row.value().length); PageUtils.putBytes(addr, 6, row.value()); }
/** * @param pageSize Page size. * @param pageAddr Page address. * @param bucket Bucket number. * @param tails Tails. * @param tailsOff Tails offset. * @return Number of items written. */ public int addTails(int pageSize, long pageAddr, int bucket, PagesList.Stripe[] tails, int tailsOff) { assert bucket >= 0 && bucket <= Short.MAX_VALUE : bucket; int cnt = getCount(pageAddr); int cap = getCapacity(pageSize, pageAddr); if (cnt == cap) return 0; int off = offset(cnt); int write = Math.min(cap - cnt, tails.length - tailsOff); for (int i = 0; i < write; i++) { PageUtils.putShort(pageAddr, off, (short)bucket); PageUtils.putLong(pageAddr, off + 2, tails[tailsOff].tailId); tailsOff++; off += ITEM_SIZE; } setCount(pageAddr, cnt + write); return write; }
/** {@inheritDoc} */ @Override public void store(long dstPageAddr, int dstIdx, BPlusIO<MetastorageSearchRow> srcIo, long srcPageAddr, int srcIdx) { int srcOff = srcIo.offset(srcIdx); int dstOff = offset(dstIdx); long link = ((DataLinkIO)srcIo).getLink(srcPageAddr, srcIdx); short len = ((DataLinkIO)srcIo).getKeySize(srcPageAddr, srcIdx); byte[] payload = PageUtils.getBytes(srcPageAddr, srcOff + 10, len); PageUtils.putLong(dstPageAddr, dstOff, link); PageUtils.putShort(dstPageAddr, dstOff + 8, len); PageUtils.putBytes(dstPageAddr, dstOff + 10, payload); }
/** {@inheritDoc} */ @Override public void store(long dstPageAddr, int dstIdx, BPlusIO<MetastorageSearchRow> srcIo, long srcPageAddr, int srcIdx) { int srcOff = srcIo.offset(srcIdx); int dstOff = offset(dstIdx); long link = ((DataLinkIO)srcIo).getLink(srcPageAddr, srcIdx); short len = ((DataLinkIO)srcIo).getKeySize(srcPageAddr, srcIdx); byte[] payload = PageUtils.getBytes(srcPageAddr, srcOff + 10, len); PageUtils.putLong(dstPageAddr, dstOff, link); PageUtils.putShort(dstPageAddr, dstOff + 8, len); PageUtils.putBytes(dstPageAddr, dstOff + 10, payload); }
PageUtils.putShort(pageAddr, off + 1, val.getShort()); return size + 1; PageUtils.putShort(pageAddr, off + 1, size); PageUtils.putBytes(pageAddr, off + 3, s); return s.length + 3; PageUtils.putShort(pageAddr, off + 1, size); PageUtils.putBytes(pageAddr, off + 3, bytes); PageUtils.putShort(pageAddr, off + 1, size); PageUtils.putBytes(pageAddr, off + 3, Arrays.copyOfRange(bytes, 0, maxSize - 3));
/** * @param memory Memory. * @param fullPageId Full page id. * @throws IgniteCheckedException If acquiring lock failed. */ private void acquireAndReleaseWriteLock(PageMemoryImpl memory, FullPageId fullPageId) throws IgniteCheckedException { long page = memory.acquirePage(1, fullPageId.pageId()); long address = memory.writeLock(1, fullPageId.pageId(), page); PageIO.setPageId(address, fullPageId.pageId()); PageIO.setType(address, PageIO.T_BPLUS_META); PageUtils.putShort(address, PageIO.VER_OFF, (short)1); memory.writeUnlock(1, fullPageId.pageId(), page, Boolean.FALSE, true); memory.releasePage(1, fullPageId.pageId(), page); }
PageUtils.putShort(addr, 0, (short)payloadSize); addr += 2;