@Override protected ReaderResult initialValue() { return new ReaderResult(); } }
@Override public void get(ByteBuffer key, ReaderResult result) throws IOException { if (key.equals(ByteBuffer.wrap("nullKey".getBytes()))) { result.notFound(); } else { result.requiresBufferSize(returnValue.length); result.getBuffer().position(0).limit(returnValue.length); result.getBuffer().put(returnValue); result.getBuffer().flip(); result.found(); } }
@Override public void get(ByteBuffer key, ReaderResult result) throws IOException { // we want at least readBufferSize bytes of available space. we might resize // again later. result.requiresBufferSize(readBufferSize); // ask the keyfile for this key keyFileReader.get(key, result); // if the key is found, then we are prepared to do the second lookup. if (result.isFound()) { // now we know where to look readRecord(result.getBuffer(), result); } }
private boolean loadValueFromCache(ByteBuffer location, ReaderResult result) { ByteBuffer value = cache.get(location); if (value != null) { result.deepCopyIntoResultBuffer(value); result.found(); result.setL2CacheHit(true); return true; } else { return false; } }
private boolean loadValueFromCache(ByteBuffer keyHash, ReaderResult result) { ByteBuffer value; value = cache.get(keyHash); if (value != null) { // Compare against the not found marker (note that this is an address equality // and not an object equality on purpose) if (value != NOT_FOUND_MARKER) { // Load cached value into result result.deepCopyIntoResultBuffer(value); result.found(); } else { result.notFound(); } // Was found in cache result.setL1CacheHit(true); return true; } else { // Was not found in cache return false; } } }
@Test public void testIt() throws Exception { EchoReader r = new EchoReader(57); ReaderResult result = new ReaderResult(); r.get(ByteBuffer.wrap(new byte[]{1, 2, 3}), result); assertTrue(result.isFound()); assertEquals("Original value: 01 02 03 Assigned to partition number: 57", new String(result.getBuffer().array())); } }
public HankResponse get(ByteBuffer key, ReaderResult result) throws IOException { // Increment requests counter LOG.trace("Partition GET"); reader.get(key, result); int l1CacheHit = result.getL1CacheHit() ? 1 : 0; int l2CacheHit = result.getL2CacheHit() ? 1 : 0; if (result.isFound()) { countersWindow.increment(1, 1, result.getBuffer().remaining(), l1CacheHit, l2CacheHit); return HankResponse.value(result.getBuffer()); } else { countersWindow.increment(1, 0, 0, l1CacheHit, l2CacheHit); return NOT_FOUND; } }
@Override public void get(ByteBuffer key, ReaderResult result) throws IOException { StringBuilder sb = new StringBuilder(); sb.append("Original value: "); sb.append(BytesUtils.bytesToHexString(key)); sb.append(" Assigned to partition number: "); sb.append(partNum); byte[] bytes = sb.toString().getBytes(); result.requiresBufferSize(bytes.length); System.arraycopy(bytes, 0, result.getBuffer().array(), 0, bytes.length); result.found(); }
ReaderResult readerResult = new ReaderResult(recordFileReadBufferBytes); ByteBuffer value = readerResult.getBuffer(); readerResult.clear();
private void readRecordAtOffset(long recordFileOffset, ReaderResult result) throws IOException { result.getBuffer().rewind(); result.getBuffer().limit(readBufferSize); recordFile.read(result.getBuffer(), recordFileOffset); result.getBuffer().rewind(); int recordSize = EncodingHelper.decodeLittleEndianVarInt(result.getBuffer()); int bytesInRecordSize = result.getBuffer().position(); if (result.getBuffer().remaining() < recordSize) { result.requiresBufferSize(newSize); result.getBuffer().position(0); result.getBuffer().limit(recordSize); int bytesReadTemp = recordFile.read(result.getBuffer(), recordFileOffset + bytesInRecordSize + bytesRead); result.getBuffer().position(0); result.getBuffer().limit(recordSize + result.getBuffer().position());
@Override public HankResponse get(int domainId, ByteBuffer key) { ReaderResult result = readerResultThreadLocal.get(); // If buffer exceeds limit, reset it if (result.getBuffer() != null && result.getBuffer().capacity() > bufferReuseMaxSize) { readerResultThreadLocal.remove(); result = readerResultThreadLocal.get(); } result.clear(); return _get(this, domainId, key, result); }
@Override public void run() { ReaderResult result = readerResultThreadLocal.get(); result.clear(); responses = new HankResponse[getBulkTaskSize]; result.clear(); } else { result = new ReaderResult(valueBuffer.capacity());
public ReaderResult(int initialBufferSize) { requiresBufferSize(initialBufferSize); }
decompressedBlockByteBuffer = decompressBlock(result.getBuffer()); result.requiresBufferSize(valueSize); result.getBuffer().clear(); result.getBuffer().put( decompressedBlockByteBuffer.array(), decompressedBlockByteBuffer.arrayOffset() + decompressedBlockByteBuffer.position(), valueSize); result.getBuffer().flip(); addValueToCache(locationDeepCopy, result.getBuffer());
public void deepCopyIntoResultBuffer(ByteBuffer value) { requiresBufferSize(value.remaining()); buffer.clear(); buffer.put(value.slice()); buffer.flip(); }
@Override public void get(ByteBuffer key, ReaderResult result) throws IOException { byte[] v = map.get(key); if (v == null) { result.notFound(); } else { result.found(); result.requiresBufferSize(v.length); System.arraycopy(v, 0, result.getBuffer().array(), 0, v.length); result.getBuffer().limit(v.length); result.getBuffer().rewind(); } }
result.notFound(); result.requiresBufferSize(maxCompressedBufferSize + maxUncompressedBufferSize); ByteBuffer buffer = result.getBuffer(); buffer.rewind(); buffer.limit(maxCompressedBufferSize); result.found(); buffer.limit(bufferOffset + valueSize); buffer.position(bufferOffset);