/** * Reconstruct a fragmented value. */ byte[] reconstruct(/*P*/ byte[] fragmented, int off, int len) throws IOException { return reconstruct(fragmented, off, len, null); }
/** * Reconstruct a fragmented value. */ byte[] reconstruct(/*P*/ byte[] fragmented, int off, int len) throws IOException { return reconstruct(fragmented, off, len, null); }
/** * Reconstruct a fragmented value. */ byte[] reconstruct(/*P*/ byte[] fragmented, int off, int len) throws IOException { return reconstruct(fragmented, off, len, null); }
/** * Reconstruct a fragmented key. */ byte[] reconstructKey(/*P*/ byte[] fragmented, int off, int len) throws IOException { try { return reconstruct(fragmented, off, len); } catch (LargeValueException e) { throw new LargeKeyException(e.getLength(), e.getCause()); } }
/** * Reconstruct a fragmented key. */ byte[] reconstructKey(/*P*/ byte[] fragmented, int off, int len) throws IOException { try { return reconstruct(fragmented, off, len); } catch (LargeValueException e) { throw new LargeKeyException(e.getLength(), e.getCause()); } }
/** * Reconstruct a fragmented key. */ byte[] reconstructKey(/*P*/ byte[] fragmented, int off, int len) throws IOException { try { return reconstruct(fragmented, off, len); } catch (LargeValueException e) { throw new LargeKeyException(e.getLength(), e.getCause()); } }
/** * @param pos position as provided by binarySearch; must be positive * @param stats [0]: full length, [1]: number of pages (>0 if fragmented) */ void retrieveKeyStats(int pos, long[] stats) throws IOException { final /*P*/ byte[] page = mPage; int loc = p_ushortGetLE(page, searchVecStart() + pos); int keyLen = p_byteGet(page, loc++); if (keyLen >= 0) { keyLen++; } else { int header = keyLen; keyLen = ((keyLen & 0x3f) << 8) | p_ubyteGet(page, loc++); if ((header & ENTRY_FRAGMENTED) != 0) { getDatabase().reconstruct(page, loc, keyLen, stats); return; } } stats[0] = keyLen; stats[1] = 0; }
/** * @param pos position as provided by binarySearch; must be positive * @param stats [0]: full length, [1]: number of pages (>0 if fragmented) */ void retrieveKeyStats(int pos, long[] stats) throws IOException { final /*P*/ byte[] page = mPage; int loc = p_ushortGetLE(page, searchVecStart() + pos); int keyLen = p_byteGet(page, loc++); if (keyLen >= 0) { keyLen++; } else { int header = keyLen; keyLen = ((keyLen & 0x3f) << 8) | p_ubyteGet(page, loc++); if ((header & ENTRY_FRAGMENTED) != 0) { getDatabase().reconstruct(page, loc, keyLen, stats); return; } } stats[0] = keyLen; stats[1] = 0; }
/** * @param pos position as provided by binarySearch; must be positive * @param stats {@literal [0]: full length, [1]: number of pages (>0 if fragmented)} */ void retrieveKeyStats(int pos, long[] stats) throws IOException { final /*P*/ byte[] page = mPage; int loc = p_ushortGetLE(page, searchVecStart() + pos); int keyLen = p_byteGet(page, loc++); if (keyLen >= 0) { keyLen++; } else { int header = keyLen; keyLen = ((keyLen & 0x3f) << 8) | p_ubyteGet(page, loc++); if ((header & ENTRY_FRAGMENTED) != 0) { getDatabase().reconstruct(page, loc, keyLen, stats); return; } } stats[0] = keyLen; stats[1] = 0; }
static byte[] retrieveLeafValueAtLoc(DatabaseAccess dbAccess, /*P*/ byte[] page, int loc) throws IOException { final int header = p_byteGet(page, loc++); if (header == 0) { return EMPTY_BYTES; } int len; if (header >= 0) { len = header; } else { if ((header & 0x20) == 0) { len = 1 + (((header & 0x1f) << 8) | p_ubyteGet(page, loc++)); } else if (header != -1) { len = 1 + (((header & 0x0f) << 16) | (p_ubyteGet(page, loc++) << 8) | p_ubyteGet(page, loc++)); } else { // ghost return null; } if ((header & ENTRY_FRAGMENTED) != 0) { return dbAccess.getDatabase().reconstruct(page, loc, len); } } byte[] value = new byte[len]; p_copyToArray(page, loc, value, 0, len); return value; }
static byte[] retrieveLeafValueAtLoc(DatabaseAccess dbAccess, /*P*/ byte[] page, int loc) throws IOException { final int header = p_byteGet(page, loc++); if (header == 0) { return EMPTY_BYTES; } int len; if (header >= 0) { len = header; } else { if ((header & 0x20) == 0) { len = 1 + (((header & 0x1f) << 8) | p_ubyteGet(page, loc++)); } else if (header != -1) { len = 1 + (((header & 0x0f) << 16) | (p_ubyteGet(page, loc++) << 8) | p_ubyteGet(page, loc++)); } else { // ghost return null; } if ((header & ENTRY_FRAGMENTED) != 0) { return dbAccess.getDatabase().reconstruct(page, loc, len); } } byte[] value = new byte[len]; p_copyToArray(page, loc, value, 0, len); return value; }
static byte[] retrieveLeafValueAtLoc(DatabaseAccess dbAccess, /*P*/ byte[] page, int loc) throws IOException { final int header = p_byteGet(page, loc++); if (header == 0) { return EMPTY_BYTES; } int len; if (header >= 0) { len = header; } else { if ((header & 0x20) == 0) { len = 1 + (((header & 0x1f) << 8) | p_ubyteGet(page, loc++)); } else if (header != -1) { len = 1 + (((header & 0x0f) << 16) | (p_ubyteGet(page, loc++) << 8) | p_ubyteGet(page, loc++)); } else { // ghost return null; } if ((header & ENTRY_FRAGMENTED) != 0) { return dbAccess.getDatabase().reconstruct(page, loc, len); } } byte[] value = new byte[len]; p_copyToArray(page, loc, value, 0, len); return value; }
getDatabase().reconstruct(page, loc, len, stats); return;
getDatabase().reconstruct(page, loc, len, stats); return;
getDatabase().reconstruct(page, loc, len, stats); return;
byte[] fullValue = db.reconstruct(page, fHeaderLoc, vLen); int max = db.mMaxFragmentedEntrySize - (vHeaderLoc - kHeaderLoc);