netty5/codec-http/src/main/java/io/netty/handler/codec/http
Trustin Lee 3a9f472161 Make retained derived buffers recyclable
Related: #4333 #4421 #5128

Motivation:

slice(), duplicate() and readSlice() currently create a non-recyclable
derived buffer instance. Under heavy load, an application that creates a
lot of derived buffers can put the garbage collector under pressure.

Modifications:

- Add the following methods which creates a non-recyclable derived buffer
  - retainedSlice()
  - retainedDuplicate()
  - readRetainedSlice()
- Add the new recyclable derived buffer implementations, which has its
  own reference count value
- Add ByteBufHolder.retainedDuplicate()
- Add ByteBufHolder.replace(ByteBuf) so that..
  - a user can replace the content of the holder in a consistent way
  - copy/duplicate/retainedDuplicate() can delegate the holder
    construction to replace(ByteBuf)
- Use retainedDuplicate() and retainedSlice() wherever possible
- Miscellaneous:
  - Rename DuplicateByteBufTest to DuplicatedByteBufTest (missing 'D')
  - Make ReplayingDecoderByteBuf.reject() return an exception instead of
    throwing it so that its callers don't need to add dummy return
    statement

Result:

Derived buffers are now recycled when created via retainedSlice() and
retainedDuplicate() and derived from a pooled buffer
2016-05-17 11:16:13 +02:00
..
cookie Drop broken DefaultCookie name validation, close #4999 2016-03-22 12:32:09 +01:00
cors Clarifying the that a null String is returned by using @{code} 2016-05-03 08:39:38 +02:00
multipart Make retained derived buffers recyclable 2016-05-17 11:16:13 +02:00
websocketx Make retained derived buffers recyclable 2016-05-17 11:16:13 +02:00
ClientCookieEncoder.java Fix javadoc links and tags 2015-12-26 08:34:31 +01:00
CombinedHttpHeaders.java Add unescapeCsvFields to parse a CSV line and implement CombinedHttpHeaders.getAll 2016-02-15 15:26:15 -08:00
ComposedLastHttpContent.java Make retained derived buffers recyclable 2016-05-17 11:16:13 +02:00
Cookie.java Deprecation cleanup for HTTP headers 2015-09-09 14:30:21 -07:00
CookieDecoder.java Validate cookie name and value characters Motivation: 2015-05-07 06:33:36 +02:00
CookieUtil.java Validate cookie name and value characters Motivation: 2015-05-07 06:33:36 +02:00
DefaultCookie.java Validate cookie name and value characters Motivation: 2015-05-07 06:33:36 +02:00
DefaultFullHttpRequest.java Make retained derived buffers recyclable 2016-05-17 11:16:13 +02:00
DefaultFullHttpResponse.java Make retained derived buffers recyclable 2016-05-17 11:16:13 +02:00
DefaultHttpContent.java Make retained derived buffers recyclable 2016-05-17 11:16:13 +02:00
DefaultHttpHeaders.java HTTP/2 Headers Type Updates 2015-10-30 15:29:44 -07:00
DefaultHttpMessage.java Add a possibility to create HttpMessage instances with pre-existing Headers 2015-12-31 08:52:30 +01:00
DefaultHttpObject.java Back port HTTP/2 codec from master to 4.1 2015-01-23 11:06:11 -05:00
DefaultHttpRequest.java Add a possibility to create HttpMessage instances with pre-existing Headers 2015-12-31 08:52:30 +01:00
DefaultHttpResponse.java Add a possibility to create HttpMessage instances with pre-existing Headers 2015-12-31 08:52:30 +01:00
DefaultLastHttpContent.java Make retained derived buffers recyclable 2016-05-17 11:16:13 +02:00
EmptyHttpHeaders.java Deprecation cleanup for HTTP headers 2015-09-09 14:30:21 -07:00
FullHttpMessage.java Make retained derived buffers recyclable 2016-05-17 11:16:13 +02:00
FullHttpRequest.java Make retained derived buffers recyclable 2016-05-17 11:16:13 +02:00
FullHttpResponse.java Make retained derived buffers recyclable 2016-05-17 11:16:13 +02:00
HttpChunkedInput.java ChunkedInput.readChunk parameter of type ByteBufAllocator 2015-12-24 12:46:40 -08:00
HttpClientCodec.java HttpObjectDecoder configurable initial buffer size 2016-02-07 21:23:29 -08:00
HttpClientUpgradeHandler.java Propagate h2c upgrade success event to the next handler before removing source codec 2016-04-07 17:41:46 +02:00
HttpConstants.java [#4010] Correctly handle whitespaces in HttpPostMultipartRequestDecoder 2015-08-14 21:16:42 +02:00
HttpContent.java Make retained derived buffers recyclable 2016-05-17 11:16:13 +02:00
HttpContentCompressor.java Headers Performance Boost and Interface Simplification 2015-08-17 08:50:11 -07:00
HttpContentDecoder.java Fix HttpHeaderValues.IDENTITY equals usage 2015-12-22 09:05:27 +01:00
HttpContentDecompressor.java Headers Performance Boost and Interface Simplification 2015-08-17 08:50:11 -07:00
HttpContentEncoder.java Deprecation cleanup for HTTP headers 2015-09-09 14:30:21 -07:00
HttpExpectationFailedEvent.java HttpObjectAggregator doesn't check content-length header 2015-08-17 09:26:50 -07:00
HttpHeaderDateFormat.java Validate cookie name and value characters Motivation: 2015-05-07 06:33:36 +02:00
HttpHeaderNames.java ByteString introduced as AsciiString super class 2015-04-14 16:35:17 -07:00
HttpHeaders.java [#4754] Correctly detect websocket upgrade 2016-02-04 14:03:08 +01:00
HttpHeadersEncoder.java HTTP/2 Headers Type Updates 2015-10-30 15:29:44 -07:00
HttpHeaderValues.java Fix the incorrect usage/value of 'Connection: upgrade' 2015-11-29 07:22:53 +01:00
HttpMessage.java Remove 'get' prefix from all HTTP/SPDY messages 2014-06-24 18:03:33 +09:00
HttpMessageUtil.java Implement toString() for all HttpMessage implementations 2014-12-31 18:39:00 +09:00
HttpMethod.java HTTP to HTTP/2 tranlation errors 2015-08-21 11:33:10 -07:00
HttpObject.java Introduce MessageAggregator and DecoderResultProvider 2014-06-05 16:51:14 +09:00
HttpObjectAggregator.java Make retained derived buffers recyclable 2016-05-17 11:16:13 +02:00
HttpObjectDecoder.java Make retained derived buffers recyclable 2016-05-17 11:16:13 +02:00
HttpObjectEncoder.java Refactor of HttpUtil and HttpHeaderUtil 2015-08-27 08:49:58 -07:00
HttpRequest.java Fix errors reported by javadoc 2015-12-27 08:36:45 +01:00
HttpRequestDecoder.java HttpObjectDecoder configurable initial buffer size 2016-02-07 21:23:29 -08:00
HttpRequestEncoder.java HttpRequestEncoder consistency with master branch 2015-08-21 11:49:46 -07:00
HttpResponse.java Fix errors reported by javadoc 2015-12-27 08:36:45 +01:00
HttpResponseDecoder.java HttpObjectDecoder configurable initial buffer size 2016-02-07 21:23:29 -08:00
HttpResponseEncoder.java Remove 'get' prefix from all HTTP/SPDY messages 2014-06-24 18:03:33 +09:00
HttpResponseStatus.java HTTP/2 Headers Type Updates 2015-10-30 15:29:44 -07:00
HttpScheme.java HttpScheme class 2015-08-20 09:59:23 -07:00
HttpServerCodec.java HttpObjectDecoder configurable initial buffer size 2016-02-07 21:23:29 -08:00
HttpServerUpgradeHandler.java Correctly handle UpgradeEvent.release(decrement). 2016-03-20 09:34:12 +01:00
HttpStatusClass.java ByteString introduced as AsciiString super class 2015-04-14 16:35:17 -07:00
HttpUtil.java Helper method to get mime-type from Content-Type header of HttpMessage 2016-03-03 15:18:39 +01:00
HttpVersion.java Refactor of HttpUtil and HttpHeaderUtil 2015-08-27 08:49:58 -07:00
LastHttpContent.java Make retained derived buffers recyclable 2016-05-17 11:16:13 +02:00
package-info.java Remove apiviz tags - we are focusing on user guide instead and putting diagrams there 2013-02-14 12:09:16 -08:00
QueryStringDecoder.java QueryStringDecoder's javadoc fix 2015-05-21 11:45:36 +02:00
QueryStringEncoder.java Remove 'get' prefix from all HTTP/SPDY messages 2014-06-24 18:03:33 +09:00
ServerCookieEncoder.java Validate cookie name and value characters Motivation: 2015-05-07 06:33:36 +02:00