/** * Writes a ByteBuffer field. */ @Override public void writeBytes(int fieldNumber, ByteBuffer value, boolean repeated) throws IOException { writeByteRange(false, fieldNumber, value.array(), value.arrayOffset() + value.position(), value.remaining(), repeated); }
private LinkedBuffer getProtobufBuffer() throws IOException { // Generate protobuf with packed repeated fields final LinkedBuffer buffer = new LinkedBuffer(LinkedBuffer.DEFAULT_BUFFER_SIZE); final ProtobufOutput output = new ProtobufOutput(buffer); // 03 // first element (varint 3) // 8E 02 // second element (varint 270) output.writeByteRange( false, 1, new byte[] { (byte) 0x03, (byte) 0x8E, (byte) 0x02 }, 0, 3, true); // Interleave output.writeFixed64(2, 8, true); // Non packed output.writeInt32(1, 1234, true); // Interleave output.writeByteRange( false, 2, new byte[] { 9, 0, 0, 0, 0, 0, 0, 0 }, 0, 8, true); // 9E A7 05 // third element (varint 86942) output.writeByteRange( false, 1, new byte[] { (byte) 0x9E, (byte) 0xA7, (byte) 0x05 }, 0, 3, true); return buffer; }
@Override public void writeByteRange(boolean utf8String, int fieldNumber, byte[] value, int offset, int length, boolean repeated) throws IOException { output.writeByteRange(utf8String, fieldNumber, value, offset, length, repeated); }