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.InputStream
ThisInputStream
implementation 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 int
read()
Required part of theInputStream
contract, although we hope that it will generally not be called, as the alternativeread(byte[], int, int)
function is more efficient.int
read(byte[] b, int off, int len)
This function is an optional, but recommended, part of theInputStream
contract.void
setChunk(int chunkIndex, byte[] chunkContent)
-
-
-
Method Detail
-
setChunk
public void setChunk(int chunkIndex, byte[] chunkContent)
-
read
public int read() throws java.io.IOException
Required part of theInputStream
contract, 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:
read
in classjava.io.InputStream
- Throws:
java.io.IOException
-
read
public int read(byte[] b, int off, int len) throws java.io.IOException
This function is an optional, but recommended, part of theInputStream
contract. It is more optimal thanInputStream.read(byte[], int, int)
which internally iterates over our ownread()
implementation, one byte at a time.- Overrides:
read
in classjava.io.InputStream
- Throws:
java.io.IOException
-
-