Class ByteBufAccessorImpl

java.lang.Object
io.kroxylicious.proxy.internal.codec.ByteBufAccessorImpl
All Implemented Interfaces:
ByteBufAccessor, org.apache.kafka.common.protocol.Readable, org.apache.kafka.common.protocol.Writable

public class ByteBufAccessorImpl extends Object implements ByteBufAccessor
An implementation of Kafka's Readable and Writable abstraction in terms of a Netty ByteBuf. This allows us to re-use Kafka's generated *RequestData and *ResponseData classes as-is. This isn't completely ideal because the Kafka APIs for decoding of Records depends on NIO ByteBuffer, so copying between ByteBuffer and ByteBuf cannot always be avoided.
  • Constructor Details

    • ByteBufAccessorImpl

      public ByteBufAccessorImpl(io.netty.buffer.ByteBuf buf)
  • Method Details

    • readVarlong

      public static long readVarlong(io.netty.buffer.ByteBuf buffer)
      Read a long stored in variable-length format using zig-zag decoding from Google Protocol Buffers.
      Parameters:
      buffer - The buffer to read from
      Returns:
      The long value read
      Throws:
      IllegalArgumentException - if variable-length value does not terminate after 10 bytes have been read
    • readUnsignedVarint

      public static int readUnsignedVarint(io.netty.buffer.ByteBuf buffer)
    • readVarint

      public static int readVarint(io.netty.buffer.ByteBuf buffer)
    • writeVarlong

      public static void writeVarlong(long value, io.netty.buffer.ByteBuf buffer)
    • writeVarint

      public static void writeVarint(int value, io.netty.buffer.ByteBuf buffer)
    • writeUnsignedVarint

      public static void writeUnsignedVarint(int value, io.netty.buffer.ByteBuf buffer)
    • readByte

      public byte readByte()
      Specified by:
      readByte in interface ByteBufAccessor
      Specified by:
      readByte in interface org.apache.kafka.common.protocol.Readable
    • readShort

      public short readShort()
      Specified by:
      readShort in interface ByteBufAccessor
      Specified by:
      readShort in interface org.apache.kafka.common.protocol.Readable
    • readInt

      public int readInt()
      Specified by:
      readInt in interface ByteBufAccessor
      Specified by:
      readInt in interface org.apache.kafka.common.protocol.Readable
    • readLong

      public long readLong()
      Specified by:
      readLong in interface ByteBufAccessor
      Specified by:
      readLong in interface org.apache.kafka.common.protocol.Readable
    • readDouble

      public double readDouble()
      Specified by:
      readDouble in interface ByteBufAccessor
      Specified by:
      readDouble in interface org.apache.kafka.common.protocol.Readable
    • readArray

      public byte[] readArray(int size)
      Specified by:
      readArray in interface ByteBufAccessor
      Specified by:
      readArray in interface org.apache.kafka.common.protocol.Readable
    • readUnsignedVarint

      public int readUnsignedVarint()
      Specified by:
      readUnsignedVarint in interface ByteBufAccessor
      Specified by:
      readUnsignedVarint in interface org.apache.kafka.common.protocol.Readable
    • readByteBuffer

      public ByteBuffer readByteBuffer(int length)
      Specified by:
      readByteBuffer in interface ByteBufAccessor
      Specified by:
      readByteBuffer in interface org.apache.kafka.common.protocol.Readable
    • readVarint

      public int readVarint()
      Specified by:
      readVarint in interface ByteBufAccessor
      Specified by:
      readVarint in interface org.apache.kafka.common.protocol.Readable
    • readVarlong

      public long readVarlong()
      Specified by:
      readVarlong in interface ByteBufAccessor
      Specified by:
      readVarlong in interface org.apache.kafka.common.protocol.Readable
    • remaining

      public int remaining()
      Specified by:
      remaining in interface ByteBufAccessor
      Specified by:
      remaining in interface org.apache.kafka.common.protocol.Readable
    • slice

      public org.apache.kafka.common.protocol.Readable slice()
      Specified by:
      slice in interface org.apache.kafka.common.protocol.Readable
    • readerIndex

      public int readerIndex()
      Specified by:
      readerIndex in interface ByteBufAccessor
    • readerIndex

      public void readerIndex(int readerIndex)
      Specified by:
      readerIndex in interface ByteBufAccessor
    • writeByte

      public void writeByte(byte val)
      Specified by:
      writeByte in interface ByteBufAccessor
      Specified by:
      writeByte in interface org.apache.kafka.common.protocol.Writable
    • writeShort

      public void writeShort(short val)
      Specified by:
      writeShort in interface ByteBufAccessor
      Specified by:
      writeShort in interface org.apache.kafka.common.protocol.Writable
    • writeInt

      public void writeInt(int val)
      Specified by:
      writeInt in interface ByteBufAccessor
      Specified by:
      writeInt in interface org.apache.kafka.common.protocol.Writable
    • writeLong

      public void writeLong(long val)
      Specified by:
      writeLong in interface ByteBufAccessor
      Specified by:
      writeLong in interface org.apache.kafka.common.protocol.Writable
    • writeDouble

      public void writeDouble(double val)
      Specified by:
      writeDouble in interface ByteBufAccessor
      Specified by:
      writeDouble in interface org.apache.kafka.common.protocol.Writable
    • writeByteArray

      public void writeByteArray(byte[] arr)
      Specified by:
      writeByteArray in interface ByteBufAccessor
      Specified by:
      writeByteArray in interface org.apache.kafka.common.protocol.Writable
    • writeUnsignedVarint

      public void writeUnsignedVarint(int i)
      Specified by:
      writeUnsignedVarint in interface ByteBufAccessor
      Specified by:
      writeUnsignedVarint in interface org.apache.kafka.common.protocol.Writable
    • writeByteBuffer

      public void writeByteBuffer(ByteBuffer byteBuffer)
      Specified by:
      writeByteBuffer in interface ByteBufAccessor
      Specified by:
      writeByteBuffer in interface org.apache.kafka.common.protocol.Writable
    • writeVarint

      public void writeVarint(int i)
      Specified by:
      writeVarint in interface ByteBufAccessor
      Specified by:
      writeVarint in interface org.apache.kafka.common.protocol.Writable
    • writeVarlong

      public void writeVarlong(long i)
      Specified by:
      writeVarlong in interface ByteBufAccessor
      Specified by:
      writeVarlong in interface org.apache.kafka.common.protocol.Writable
    • ensureWritable

      public void ensureWritable(int encodedSize)
      Specified by:
      ensureWritable in interface ByteBufAccessor
    • writerIndex

      public int writerIndex()
      Specified by:
      writerIndex in interface ByteBufAccessor
    • writeBytes

      public void writeBytes(io.netty.buffer.ByteBuf buf, int length)
      Specified by:
      writeBytes in interface ByteBufAccessor