@Override public E get(long address) throws IOException { final int segmentNum = (int)(address>>> segmentShift); final Option<SharedReference<BlockCompressedRecordFile<E>>> option = fileCache.get(segmentNum); if (option.isNone()) { throw new IOException("address is invalid: "+address); } final SharedReference<BlockCompressedRecordFile<E>> reference = option.some(); final E ret; try { ret = reference.get().get(address & segmentMask); } finally { Closeables2.closeQuietly(reference, log); } return ret; }
public Option<RecordFile.Reader<E>> getFileReader(final long segmentNum) throws IOException { final Option<SharedReference<BlockCompressedRecordFile<E>>> option = fileCache.get((int) segmentNum); if (option.isNone()) return Option.none(); final SharedReference<BlockCompressedRecordFile<E>> reference = option.some();
public Option<RecordFile.Reader<E>> getFileReader(final long segmentNum) throws IOException { final Option<SharedReference<BlockCompressedRecordFile<E>>> option = fileCache.get((int) segmentNum); if (option.isNone()) return Option.none(); final SharedReference<BlockCompressedRecordFile<E>> reference = option.some();
public RecordLogDirectory( File dir, Serializer<E> serializer, int maxCachedFiles, CompressionCodec codec, int blockSize, int fileIndexBits, int recordIndexBits, int padBits, boolean mlockFiles ) { this.dir = dir; this.serializer = serializer; this.maxCachedFiles = maxCachedFiles; this.codec = codec; this.blockSize = blockSize; this.fileIndexBits = fileIndexBits; this.recordIndexBits = recordIndexBits; this.padBits = padBits; segmentShift = 64-fileIndexBits; segmentMask = (1L<< segmentShift)-1; fileCache = new FileCache(mlockFiles); }
public RecordLogDirectory( File dir, Serializer<E> serializer, int maxCachedFiles, CompressionCodec codec, int blockSize, int fileIndexBits, int recordIndexBits, int padBits, boolean mlockFiles ) { this.dir = dir; this.serializer = serializer; this.maxCachedFiles = maxCachedFiles; this.codec = codec; this.blockSize = blockSize; this.fileIndexBits = fileIndexBits; this.recordIndexBits = recordIndexBits; this.padBits = padBits; segmentShift = 64-fileIndexBits; segmentMask = (1L<< segmentShift)-1; fileCache = new FileCache(mlockFiles); }
@Override public E get(long address) throws IOException { final int segmentNum = (int)(address>>> segmentShift); final Option<SharedReference<BlockCompressedRecordFile<E>>> option = fileCache.get(segmentNum); if (option.isNone()) { throw new IOException("address is invalid: "+address); } final SharedReference<BlockCompressedRecordFile<E>> reference = option.some(); final E ret; try { ret = reference.get().get(address & segmentMask); } finally { Closeables2.closeQuietly(reference, log); } return ret; }
@Override public void close() throws IOException { fileCache.close(); }
@Override public void close() throws IOException { fileCache.close(); }