ByteBufferOutputStream out = new ByteBufferOutputStream(); a = (byte) Character.toUpperCase((char) a); out.writeShort((short) (0x8000 | a)); } else { out.writeShort((short) comparator.length()); out.write(comparator.getBytes(Charsets.UTF_8)); out.writeShort((short) cb.remaining()); out.write(cb.slice()); if ((i == (components.size() - 1)) && (equality != ComponentEquality.EQUAL)) { out.write(equality.toByte()); } else { out.write(c.getEquality().toByte()); serialized = out.getByteBuffer(); return serialized.duplicate();
public ByteBuffer getByteBuffer() { List<ByteBuffer> list = getBufferList(); // if there's just one bytebuffer in list, return it if (list.size() == 1) { return list.get(0); } int size = 0; for (ByteBuffer buffer : list) { size += buffer.remaining(); } ByteBuffer result = ByteBuffer.allocate(size); for (ByteBuffer buffer : list) { result.put(buffer); } return (ByteBuffer) result.rewind(); }
@Override public void write(int b) { ByteBuffer buffer = getBufferWithCapacity(1); buffer.put((byte) b); }
@Override public void write(byte[] b, int off, int len) { ByteBuffer lastBuffer = buffers.get(buffers.size() - 1); if(lastBuffer.remaining() >= len) { lastBuffer.put(b, off, len); } else { int writtenToLast = lastBuffer.remaining(); if(lastBuffer.remaining() != 0) { lastBuffer.put(b, off, writtenToLast); } //this will create a buffer with //a capacity of at least len - writtenToLast getBufferWithCapacity(len - writtenToLast); //this will not need to resize write(b, off + writtenToLast, len - writtenToLast); } }
private void testWriteLByteArray(int bufferSize) throws IOException { ByteBufferOutputStream sink = new ByteBufferOutputStream(); byte[] written = new byte[bufferSize]; new Random().nextBytes(written); sink.write(written); assertEquals(0, ByteBufferUtil.compare(sink.getByteBuffer(), written)); }
@Override public void write(byte[] b) { write(b, 0, b.length); }
public ByteBufferOutputStream() { reset(); }
@Test public void testWriteLargeByteBuffer() throws IOException { ByteBufferOutputStream sink = new ByteBufferOutputStream(); byte[] written = new byte[32 * 1000]; new Random().nextBytes(written); sink.write(ByteBuffer.wrap(written)); assertEquals(0, ByteBufferUtil.compare(sink.getByteBuffer(), written)); }
@Override public void write(byte[] b, int off, int len) { ByteBuffer lastBuffer = buffers.get(buffers.size() - 1); if(lastBuffer.remaining() >= len) { lastBuffer.put(b, off, len); } else { int writtenToLast = lastBuffer.remaining(); if(lastBuffer.remaining() != 0) { lastBuffer.put(b, off, writtenToLast); } //this will create a buffer with //a capacity of at least len - writtenToLast getBufferWithCapacity(len - writtenToLast); //this will not need to resize write(b, off + writtenToLast, len - writtenToLast); } }
/** Add a buffer to the output without copying, if possible. */ public void write(ByteBuffer buffer) { if (buffer.remaining() < 8196) { write(buffer.array(), buffer.arrayOffset() + buffer.position(), buffer.remaining()); } else { // append w/o copying bytes ByteBuffer dup = buffer.duplicate(); dup.position(buffer.limit()); // ready for flip buffers.add(dup); } } }
/** Returns all data written and resets the stream to be empty. */ public List<ByteBuffer> getBufferList() { List<ByteBuffer> result = buffers; reset(); for (ByteBuffer buffer : result) { buffer.flip(); } return result; }
ByteBufferOutputStream out = new ByteBufferOutputStream(); a = (byte) Character.toUpperCase((char) a); out.writeShort((short) (0x8000 | a)); } else { out.writeShort((short) comparator.length()); out.write(comparator.getBytes(Charsets.UTF_8)); out.writeShort((short) cb.remaining()); out.write(cb.slice()); if ((i == (components.size() - 1)) && (equality != ComponentEquality.EQUAL)) { out.write(equality.toByte()); } else { out.write(c.getEquality().toByte()); serialized = out.getByteBuffer(); return serialized.duplicate();
@Test public void testWriteByteArraySeveralSteps() throws IOException { ByteBufferOutputStream sink = new ByteBufferOutputStream(); byte[] written = new byte[32 * ByteBufferOutputStream.INITIAL_BUFFER_SIZE]; new Random().nextBytes(written); for(int i = 0; i < 32; i++) { sink.write(written, i * ByteBufferOutputStream.INITIAL_BUFFER_SIZE, ByteBufferOutputStream.INITIAL_BUFFER_SIZE); } assertEquals(0, ByteBufferUtil.compare(sink.getByteBuffer(), written)); }
public void writeShort(short value) { ByteBuffer buffer = getBufferWithCapacity(2); buffer.putShort(value); }
@Override public void write(byte[] b, int off, int len) { ByteBuffer lastBuffer = buffers.get(buffers.size() - 1); if(lastBuffer.remaining() >= len) { lastBuffer.put(b, off, len); } else { int writtenToLast = lastBuffer.remaining(); if(lastBuffer.remaining() != 0) { lastBuffer.put(b, off, writtenToLast); } //this will create a buffer with //a capacity of at least len - writtenToLast getBufferWithCapacity(len - writtenToLast); //this will not need to resize write(b, off + writtenToLast, len - writtenToLast); } }
@Override public void write(byte[] b) { write(b, 0, b.length); }
public ByteBufferOutputStream() { reset(); }
public ByteBuffer getByteBuffer() { List<ByteBuffer> list = getBufferList(); // if there's just one bytebuffer in list, return it if (list.size() == 1) { return list.get(0); } int size = 0; for (ByteBuffer buffer : list) { size += buffer.remaining(); } ByteBuffer result = ByteBuffer.allocate(size); for (ByteBuffer buffer : list) { result.put(buffer); } return (ByteBuffer) result.rewind(); }
ByteBufferOutputStream out = new ByteBufferOutputStream(); a = (byte) Character.toUpperCase((char) a); out.writeShort((short) (0x8000 | a)); } else { out.writeShort((short) comparator.length()); out.write(comparator.getBytes(Charsets.UTF_8)); out.writeShort((short) cb.remaining()); out.write(cb.slice()); if ((i == (components.size() - 1)) && (equality != ComponentEquality.EQUAL)) { out.write(equality.toByte()); } else { out.write(c.getEquality().toByte()); serialized = out.getByteBuffer(); return serialized.duplicate();
public void writeChar(char value) { ByteBuffer buffer = getBufferWithCapacity(2); buffer.putChar(value); }