/** * Read a single chunk from the given stream. * * @param inputStream to read chunk from * @return a single chunk * @throws IOException if an error occurs while reading the stream */ public ChunkedBodyContents.Chunk readNextChunk(InputStream inputStream) throws IOException { AtomicBoolean hasExtensions = new AtomicBoolean(false); int chunkSize = readChunkSize(inputStream, hasExtensions); if (chunkSize < 0) { throw new IllegalStateException("unexpected EOF, could not read chunked body"); } return readChunk(inputStream, chunkSize, hasExtensions.get()); }
/** * Read a single chunk from the given stream. * * @param inputStream to read chunk from * @return a single chunk * @throws IOException if an error occurs while reading the stream */ public ChunkedBodyContents.Chunk readNextChunk(InputStream inputStream) throws IOException { AtomicBoolean hasExtensions = new AtomicBoolean(false); int chunkSize = readChunkSize(inputStream, hasExtensions); if (chunkSize < 0) { throw new IllegalStateException("unexpected EOF, could not read chunked body"); } return readChunk(inputStream, chunkSize, hasExtensions.get()); }
/** * Parse the full contents of the chunked message. * * @param inputStream to read message from * @param chunkConsumer consumer of individual chunks * @param trailerConsumer consumer of the trailer part * @throws IOException if an error occurs while reading the stream or calling the callbacks */ public void parseChunkedBody(InputStream inputStream, IOConsumer<ChunkedBodyContents.Chunk> chunkConsumer, IOConsumer<RawHttpHeaders> trailerConsumer) throws IOException { int chunkSize = 1; while (chunkSize > 0) { AtomicBoolean hasExtensions = new AtomicBoolean(false); chunkSize = readChunkSize(inputStream, hasExtensions); if (chunkSize < 0) { throw new IllegalStateException("unexpected EOF, could not read chunked body"); } ChunkedBodyContents.Chunk chunk = readChunk(inputStream, chunkSize, hasExtensions.get()); chunkConsumer.accept(chunk); } RawHttpHeaders trailer = readTrailer(inputStream); trailerConsumer.accept(trailer); }
/** * Parse the full contents of the chunked message. * * @param inputStream to read message from * @param chunkConsumer consumer of individual chunks * @param trailerConsumer consumer of the trailer part * @throws IOException if an error occurs while reading the stream or calling the callbacks */ public void parseChunkedBody(InputStream inputStream, IOConsumer<ChunkedBodyContents.Chunk> chunkConsumer, IOConsumer<RawHttpHeaders> trailerConsumer) throws IOException { int chunkSize = 1; while (chunkSize > 0) { AtomicBoolean hasExtensions = new AtomicBoolean(false); chunkSize = readChunkSize(inputStream, hasExtensions); if (chunkSize < 0) { throw new IllegalStateException("unexpected EOF, could not read chunked body"); } ChunkedBodyContents.Chunk chunk = readChunk(inputStream, chunkSize, hasExtensions.get()); chunkConsumer.accept(chunk); } RawHttpHeaders trailer = readTrailer(inputStream); trailerConsumer.accept(trailer); }