use of org.neo4j.com.BlockLogBuffer in project neo4j by neo4j.
the class ToNetworkStoreWriter method write.
@Override
public long write(String path, ReadableByteChannel data, ByteBuffer temporaryBuffer, boolean hasData, int requiredElementAlignment) throws IOException {
char[] chars = path.toCharArray();
targetBuffer.writeShort(chars.length);
Protocol.writeChars(targetBuffer, chars);
targetBuffer.writeByte(hasData ? 1 : 0);
// TODO Make use of temporaryBuffer?
BlockLogBuffer buffer = new BlockLogBuffer(targetBuffer, bufferMonitor);
long totalWritten = Short.BYTES + chars.length * Character.BYTES + Byte.BYTES;
if (hasData) {
targetBuffer.writeInt(requiredElementAlignment);
totalWritten += Integer.BYTES;
totalWritten += buffer.write(data);
buffer.close();
}
return totalWritten;
}
use of org.neo4j.com.BlockLogBuffer in project neo4j by neo4j.
the class TestBlockLogBuffer method readOnlyOneFullBlock.
@Test
public void readOnlyOneFullBlock() throws Exception {
byte[] bytes = new byte[256];
ChannelBuffer wrappedBuffer = ChannelBuffers.wrappedBuffer(bytes);
wrappedBuffer.resetWriterIndex();
BlockLogBuffer buffer = new BlockLogBuffer(wrappedBuffer, new Monitors().newMonitor(ByteCounterMonitor.class));
byte[] bytesValue = new byte[255];
bytesValue[0] = 1;
bytesValue[254] = -1;
buffer.put(bytesValue, bytesValue.length);
buffer.close();
ReadableByteChannel reader = new BlockLogReader(wrappedBuffer);
ByteBuffer verificationBuffer = ByteBuffer.wrap(new byte[1000]);
reader.read(verificationBuffer);
verificationBuffer.flip();
byte[] actualBytes = new byte[bytesValue.length];
verificationBuffer.get(actualBytes);
assertThat(actualBytes, new ArrayMatches<byte[]>(bytesValue));
}
use of org.neo4j.com.BlockLogBuffer in project neo4j by neo4j.
the class TestBlockLogBuffer method canReaderReallyLargeByteArray.
@Test
public void canReaderReallyLargeByteArray() throws Exception {
byte[] bytes = new byte[650];
ChannelBuffer wrappedBuffer = ChannelBuffers.wrappedBuffer(bytes);
wrappedBuffer.resetWriterIndex();
BlockLogBuffer buffer = new BlockLogBuffer(wrappedBuffer, new Monitors().newMonitor(ByteCounterMonitor.class));
byte[] bytesValue = new byte[600];
bytesValue[1] = 1;
bytesValue[99] = 2;
bytesValue[199] = 3;
bytesValue[299] = 4;
bytesValue[399] = 5;
bytesValue[499] = 6;
bytesValue[599] = 7;
buffer.put(bytesValue, bytesValue.length);
buffer.close();
byte[] actual;
BlockLogReader reader = new BlockLogReader(wrappedBuffer);
ByteBuffer verificationBuffer = ByteBuffer.wrap(new byte[1000]);
reader.read(verificationBuffer);
verificationBuffer.flip();
actual = new byte[255];
verificationBuffer.get(actual);
assertThat(actual, new ArrayMatches<byte[]>(Arrays.copyOfRange(bytesValue, 0, 255)));
actual = new byte[255];
verificationBuffer.get(actual);
assertThat(actual, new ArrayMatches<byte[]>(Arrays.copyOfRange(bytesValue, 255, 510)));
actual = new byte[90];
verificationBuffer.get(actual);
assertThat(actual, new ArrayMatches<byte[]>(Arrays.copyOfRange(bytesValue, 510, 600)));
}
use of org.neo4j.com.BlockLogBuffer in project neo4j by neo4j.
the class TestBlockLogBuffer method onlyOneFullBlock.
@Test
public void onlyOneFullBlock() throws Exception {
byte[] bytes = new byte[256];
ChannelBuffer wrappedBuffer = ChannelBuffers.wrappedBuffer(bytes);
wrappedBuffer.resetWriterIndex();
BlockLogBuffer buffer = new BlockLogBuffer(wrappedBuffer, new Monitors().newMonitor(ByteCounterMonitor.class));
byte[] bytesValue = new byte[255];
bytesValue[0] = 1;
bytesValue[254] = -1;
buffer.put(bytesValue, bytesValue.length);
buffer.close();
ByteBuffer verificationBuffer = ByteBuffer.wrap(bytes);
assertEquals((byte) 255, verificationBuffer.get());
byte[] actualBytes = new byte[bytesValue.length];
verificationBuffer.get(actualBytes);
assertThat(actualBytes, new ArrayMatches<byte[]>(bytesValue));
}
use of org.neo4j.com.BlockLogBuffer in project neo4j by neo4j.
the class TestBlockLogBuffer method readOnlyOneNonFullBlock.
@Test
public void readOnlyOneNonFullBlock() throws IOException {
byte[] bytes = new byte[255];
ChannelBuffer wrappedBuffer = ChannelBuffers.wrappedBuffer(bytes);
wrappedBuffer.resetWriterIndex();
BlockLogBuffer buffer = new BlockLogBuffer(wrappedBuffer, new Monitors().newMonitor(ByteCounterMonitor.class));
byte byteValue = 5;
int intValue = 1234;
long longValue = 574853;
float floatValue = 304985.5f;
double doubleValue = 48493.22d;
final byte[] bytesValue = new byte[] { 1, 5, 2, 6, 3 };
buffer.put(byteValue);
buffer.putInt(intValue);
buffer.putLong(longValue);
buffer.putFloat(floatValue);
buffer.putDouble(doubleValue);
buffer.put(bytesValue, bytesValue.length);
buffer.close();
ReadableByteChannel reader = new BlockLogReader(wrappedBuffer);
ByteBuffer verificationBuffer = ByteBuffer.wrap(new byte[1000]);
reader.read(verificationBuffer);
verificationBuffer.flip();
assertEquals(byteValue, verificationBuffer.get());
assertEquals(intValue, verificationBuffer.getInt());
assertEquals(longValue, verificationBuffer.getLong());
assertEquals(floatValue, verificationBuffer.getFloat(), 0.0);
assertEquals(doubleValue, verificationBuffer.getDouble(), 0.0);
byte[] actualBytes = new byte[bytesValue.length];
verificationBuffer.get(actualBytes);
assertThat(actualBytes, new ArrayMatches<byte[]>(bytesValue));
}
Aggregations