/** * Frees allocated memory in case of direct byte buffer. */ public void free() { if (mode == DIRECT || mode == MAPPED) GridUnsafe.cleanDirectBuffer(buf); }
/** * @param record page snapshot record. * @return string identifier of page (IO) type. */ private static String getPageType(PageSnapshot record) { byte[] pageData = record.pageData(); ByteBuffer buf = ByteBuffer.allocateDirect(pageData.length); try { buf.order(ByteOrder.nativeOrder()); buf.put(pageData); long addr = GridUnsafe.bufferAddress(buf); int type = PageIO.getType(addr); int ver = PageIO.getVersion(addr); return PageIO.getPageIO(type, ver).getClass().getSimpleName(); } catch (IgniteCheckedException ignored) { } finally { GridUnsafe.cleanDirectBuffer(buf); } return ""; }
/** {@inheritDoc} */ @Override public String toString() { ByteBuffer buf = ByteBuffer.allocateDirect(pageData.length); buf.order(ByteOrder.nativeOrder()); buf.put(pageData); long addr = GridUnsafe.bufferAddress(buf); try { return "PageSnapshot [fullPageId = " + fullPageId() + ", page = [\n" + PageIO.printPage(addr, realPageSize) + "],\nsuper = [" + super.toString() + "]]"; } catch (IgniteCheckedException ignored) { return "Error during call'toString' of PageSnapshot [fullPageId=" + fullPageId() + ", pageData = " + Arrays.toString(pageData) + ", super=" + super.toString() + "]"; } finally { GridUnsafe.cleanDirectBuffer(buf); } }
/** * Frees allocated memory in case of direct byte buffer. */ public void free() { if (mode == DIRECT || mode == MAPPED) GridUnsafe.cleanDirectBuffer(buf); }
/** {@inheritDoc} */ @Override public String toString() { ByteBuffer buf = ByteBuffer.allocateDirect(pageData.length); buf.order(ByteOrder.nativeOrder()); buf.put(pageData); long addr = GridUnsafe.bufferAddress(buf); try { return "PageSnapshot [fullPageId = " + fullPageId() + ", page = [\n" + PageIO.printPage(addr, realPageSize) + "],\nsuper = [" + super.toString() + "]]"; } catch (IgniteCheckedException ignored) { return "Error during call'toString' of PageSnapshot [fullPageId=" + fullPageId() + ", pageData = " + Arrays.toString(pageData) + ", super=" + super.toString() + "]"; } finally { GridUnsafe.cleanDirectBuffer(buf); } }