Class ChunkedValueInputStream
- java.lang.Object
-
- java.io.InputStream
-
- com.linkedin.davinci.storage.chunking.ChunkedValueInputStream
-
- All Implemented Interfaces:
java.io.Closeable,java.lang.AutoCloseable
public class ChunkedValueInputStream extends java.io.InputStreamThisInputStreamimplementation allows us to pass a value made up of many chunks into the Avro decoder without stitching it up into a single big byte array. This is in the hope of avoiding humongous allocations and being more GC-efficient. NOT intended for multi-threaded usage.
-
-
Constructor Summary
Constructors Constructor Description ChunkedValueInputStream(int numberOfChunks)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description intread()Required part of theInputStreamcontract, although we hope that it will generally not be called, as the alternativeread(byte[], int, int)function is more efficient.intread(byte[] b, int off, int len)This function is an optional, but recommended, part of theInputStreamcontract.voidsetChunk(int chunkIndex, byte[] chunkContent)
-
-
-
Method Detail
-
setChunk
public void setChunk(int chunkIndex, byte[] chunkContent)
-
read
public int read() throws java.io.IOExceptionRequired part of theInputStreamcontract, although we hope that it will generally not be called, as the alternativeread(byte[], int, int)function is more efficient. Still, we provide this mandatory function in case any code needs to do byte-by-byte consumption.- Specified by:
readin classjava.io.InputStream- Throws:
java.io.IOException
-
read
public int read(byte[] b, int off, int len) throws java.io.IOExceptionThis function is an optional, but recommended, part of theInputStreamcontract. It is more optimal thanInputStream.read(byte[], int, int)which internally iterates over our ownread()implementation, one byte at a time.- Overrides:
readin classjava.io.InputStream- Throws:
java.io.IOException
-
-