public byte getByte(long index) { return buf.get((int) index); }
byte get(long index) { return dumpBuffer.get((int) index); }
@Override public byte readByte() { assert buffer != null; return buffer.get((int) position++); }
@Override public byte readByte(int offset) { assert buffer != null; return buffer.get((int) (start + offset)); }
private String getName(int tab, int stroff, MappedByteBuffer fmap) { if (tab == 0) { return null; } StringBuilder sb = new StringBuilder(20); byte c; int start = tab + stroff; while ((c = fmap.get(start++)) != 0x00) { sb.append((char) c); } return sb.toString(); }
private byte[] readBytes(int processNumber, int offset, int length) { int bufferOffset = offset(processNumber) + offset; byte[] bytes = new byte[length]; for (int i = 0; i < length; i++) { bytes[i] = mappedByteBuffer.get(bufferOffset + i); } return bytes; }
private byte readByte(int processNumber, int offset) { return mappedByteBuffer.get(offset(processNumber) + offset); }
synchronized void get(long position, byte[] chars) { dumpBuffer.position((int) position); dumpBuffer.get(chars); }
private byte[] getBlock(long offset) throws IOException { byte[] block; if (offset < mappedSize) { block = new byte[blockSize]; buf.position((int)offset); buf.get(block); return block; } else { Long offsetObj = new Long(offset); block = (byte[]) blockCache.get(offsetObj); if (block == null) { block = new byte[blockSize]; data.seek(offset); data.readFully(block); blockCache.put(offsetObj,block); } return block; } }
@Override public int read(@NotNull byte[] b, int off, int len) { if (len > remaining()) len = remaining(); for (int i = 0; i < len; i++) { assert buffer != null; b[i + off] = buffer.get((int) (i + position)); } position += len; return len; } }
private void checkIdentifier() { byte[] array = new byte[IDENTIFIER.length]; this.header.position(0); this.header.get(array); if (Arrays.equals(IDENTIFIER, array)) { // ignore } else if (Arrays.equals(new byte[IDENTIFIER.length], array)) { this.header.position(0); this.header.put(IDENTIFIER); } else { throw new IllegalStateException(); } }
/** * Reads a number of bytes from the RRD file on the disk * * @param offset Starting file offset * @param b Buffer which receives bytes read from the file. */ @Override protected synchronized void read(long offset, byte[] b) throws IOException { if (byteBuffer != null) { byteBuffer.position((int) offset); byteBuffer.get(b); } else { throw new IOException("Read failed, file " + getPath() + " not mapped for I/O"); } }
private void checkVersion() { this.header.position(IDENTIFIER.length); int major = this.header.get(); int minor = this.header.get(); if (major == 0 && minor == 2) { // ignore } else if (major == 0 && minor == 0) { this.header.position(IDENTIFIER.length); this.header.put((byte) 0x0); this.header.put((byte) 0x2); } else { throw new IllegalStateException(); } }
public byte getByte(long index) { return dumpBuffer[getBufferIndex(index)].get(getBufferOffset(index)); }
byte get(long index) { return dumpBuffer[getBufferIndex(index)].get(getBufferOffset(index)); }
synchronized void get(long position, byte[] chars) { MappedByteBuffer buffer = dumpBuffer[getBufferIndex(position)]; buffer.position(getBufferOffset(position)); buffer.get(chars); }
private byte readByte(AllProcessesCommands commands, int offset) { return commands.mappedByteBuffer.get(commands.offset(PROCESS_NUMBER) + offset); }
private byte checkMasterFlag(Boolean master) { this.header.position(IDENTIFIER.length + 2); if (master == null) { return this.header.get(); } else if (master) { this.header.put((byte) 0x1); return (byte) 0x1; } else { this.header.put((byte) 0x0); return (byte) 0x0; } }
@Test public void testUnmapDoesntCrashJVM() throws Exception { final File file = temporaryFolder.newFile("some_mmap_file"); try (final OutputStream os = new BufferedOutputStream(new FileOutputStream(file))) { final byte[] data = new byte[4096]; Arrays.fill(data, (byte) 0x5A); os.write(data); } final MappedByteBuffer mappedByteBuffer = Files.map(file); Assert.assertEquals((byte) 0x5A, mappedByteBuffer.get(0)); ByteBufferUtils.unmap(mappedByteBuffer); ByteBufferUtils.unmap(mappedByteBuffer); }
@Test public void testMap() throws IOException { File dataFile = folder.newFile("data"); long buffersMemoryBefore = BufferUtils.totalMemoryUsedByDirectAndMappedBuffers(); try (RandomAccessFile raf = new RandomAccessFile(dataFile, "rw")) { raf.write(42); raf.setLength(1 << 20); // 1 MB } try (MappedByteBufferHandler mappedByteBufferHandler = FileUtils.map(dataFile)) { Assert.assertEquals(42, mappedByteBufferHandler.get().get(0)); } long buffersMemoryAfter = BufferUtils.totalMemoryUsedByDirectAndMappedBuffers(); Assert.assertEquals(buffersMemoryBefore, buffersMemoryAfter); }