@Override public int refCnt() { return content.refCnt(); }
@Override public int refCnt() { return content.refCnt(); }
@Override public void disposeBufferedBody() { bodyChunks.forEach(chunk -> { if ((chunk != null) && (chunk.refCnt() > 0)) { chunk.release(); } }); bodyChunks.clear(); }
@Override public void runBufferedBodyContentThroughFilter(ZuulFilter filter) { //Loop optimized for the common case: Most filters' processContentChunk() return // original chunk passed in as is without any processing for (int i=0; i < bodyChunks.size(); i++) { final HttpContent origChunk = bodyChunks.get(i); final HttpContent filteredChunk = filter.processContentChunk(this, origChunk); if ((filteredChunk != null) && (filteredChunk != origChunk)) { //filter actually did some processing, set the new chunk in and release the old chunk. bodyChunks.set(i, filteredChunk); final int refCnt = origChunk.refCnt(); if (refCnt > 0) { origChunk.release(refCnt); } } } }
@Override public void disposeBufferedBody() { bodyChunks.forEach(chunk -> { if ((chunk != null) && (chunk.refCnt() > 0)) { chunk.release(); } }); bodyChunks.clear(); }
@Override public void runBufferedBodyContentThroughFilter(ZuulFilter filter) { //Loop optimized for the common case: Most filters' processContentChunk() return // original chunk passed in as is without any processing for (int i=0; i < bodyChunks.size(); i++) { final HttpContent origChunk = bodyChunks.get(i); final HttpContent filteredChunk = filter.processContentChunk(this, origChunk); if ((filteredChunk != null) && (filteredChunk != origChunk)) { //filter actually did some processing, set the new chunk in and release the old chunk. bodyChunks.set(i, filteredChunk); final int refCnt = origChunk.refCnt(); if (refCnt > 0) { origChunk.release(refCnt); } } } }
@Override public int refCnt() { return content.refCnt(); }
@Override public int refCnt() { return content.refCnt(); }
@Override public int refCnt() { return content.refCnt(); }
@Override public int refCnt() { return content.refCnt(); }
@Override public int refCnt() { return content.refCnt(); }
@Override public void disposeBufferedBody() { bodyChunks.forEach(chunk -> { if ((chunk != null) && (chunk.refCnt() > 0)) { chunk.release(); } }); bodyChunks.clear(); }
@Override public void runBufferedBodyContentThroughFilter(ZuulFilter filter) { //Loop optimized for the common case: Most filters' processContentChunk() return // original chunk passed in as is without any processing for (int i=0; i < bodyChunks.size(); i++) { final HttpContent origChunk = bodyChunks.get(i); final HttpContent filteredChunk = filter.processContentChunk(this, origChunk); if ((filteredChunk != null) && (filteredChunk != origChunk)) { //filter actually did some processing, set the new chunk in and release the old chunk. bodyChunks.set(i, filteredChunk); final int refCnt = origChunk.refCnt(); if (refCnt > 0) { origChunk.release(refCnt); } } } }
public void deframe(HttpContent data) { if (data == null) { throw new RuntimeException("Data buffer is null"); } boolean needToCloseData = true; try { if (!isClosedOrScheduledToClose()) { unprocessed.addBuffer(data.content()); needToCloseData = false; ThreadPoolFactory.getInstance().getWorkerExecutor().execute(this::deliver); } } finally { if (needToCloseData && data.refCnt() != 0) { data.release(); } } }
HttpContent chunk1 = new DefaultHttpContent(Unpooled.copiedBuffer(chunk1Bytes)); HttpContent lastChunk = new DefaultLastHttpContent(Unpooled.copiedBuffer(lastChunkBytes)); assertThat(chunk1.refCnt(), is(1)); assertThat(lastChunk.refCnt(), is(1)); assertThat(requestInfo.getRawContentBytes(), nullValue()); assertThat(requestInfo.getRawContent(), nullValue()); assertThat(chunk1.refCnt(), is(2)); assertThat(lastChunk.refCnt(), is(2)); assertThat(requestInfo.contentChunks.size(), is(2)); assertThat(requestInfo.isCompleteRequestWithAllChunks(), is(true)); assertThat(requestInfo.getRawContent(), is(chunk1String + lastChunkString)); assertThat(requestInfo.getRawContent() == rawContentString, is(true)); // Verify that the raw content string is cached the first time it's loaded and reused for subsequent calls assertThat(chunk1.refCnt(), is(1)); assertThat(lastChunk.refCnt(), is(1));