Trustin Lee
81e2db10fa
ByteBufAllocator API w/ ByteBuf perf improvements
...
This commit introduces a new API for ByteBuf allocation which fixes
issue #643 along with refactoring of ByteBuf for simplicity and better
performance. (see #62 )
A user can configure the ByteBufAllocator of a Channel via
ChannelOption.ALLOCATOR or ChannelConfig.get/setAllocator(). The
default allocator is currently UnpooledByteBufAllocator.HEAP_BY_DEFAULT.
To allocate a buffer, do not use Unpooled anymore. do the following:
ctx.alloc().buffer(...); // allocator chooses the buffer type.
ctx.alloc().heapBuffer(...);
ctx.alloc().directBuffer(...);
To deallocate a buffer, use the unsafe free() operation:
((UnsafeByteBuf) buf).free();
The following is the list of the relevant changes:
- Add ChannelInboundHandler.freeInboundBuffer() and
ChannelOutboundHandler.freeOutboundBuffer() to let a user free the
buffer he or she allocated. ChannelHandler adapter classes implement
is already, so most users won't need to call free() by themselves.
freeIn/OutboundBuffer() methods are invoked when a Channel is closed
and deregistered.
- All ByteBuf by contract must implement UnsafeByteBuf. To access an
unsafe operation: ((UnsafeByteBuf) buf).internalNioBuffer()
- Replace WrappedByteBuf and ByteBuf.Unsafe with UnsafeByteBuf to
simplify overall class hierarchy and to avoid unnecesary instantiation
of Unsafe instances on an unsafe operation.
- Remove buffer reference counting which is confusing
- Instantiate SwappedByteBuf lazily to avoid instantiation cost
- Rename ChannelFutureFactory to ChannelPropertyAccess and move common
methods between Channel and ChannelHandlerContext there. Also made it
package-private to hide it from a user.
- Remove unused unsafe operations such as newBuffer()
- Add DetectionUtil.canFreeDirectBuffer() so that an allocator decides
which buffer type to use safely
2012-11-22 15:10:59 +09:00
Mike Heath
40e53b9b68
Fixed exception handling to call the exceptionCaught method in the current handler. By default the handler will call ctx.fireExceptionCaught which is what was happening before.
2012-11-20 10:00:27 +01:00
dantran
4107b08f29
Only generate OSGi manifest only at all-in-on sub module to reduce the complexity to the build
2012-11-19 06:27:18 +01:00
coltnz
fea7475080
[ #749 ] Report non @Shareable handler name that has been re-added.
2012-11-18 11:40:01 +01:00
Evans Yang
a0da613e86
[ #743 ] Make the "tail" point to the last channel handler context. And add several cases for DefaultChannelPipeline.
2012-11-16 07:33:32 +01:00
Evans Yang
37d04c26a8
[ #739 ] Potential NullPointException without checking the initialCtx's status
2012-11-16 07:08:45 +01:00
Shawn Silverman
0bd73b8d80
[ #732 ] [ #672 ] Allow replacing an inbound or outbound buffer of a handler
2012-11-13 21:17:42 +01:00
Norman Maurer
d177fd5a17
[ #735 ] Make sure the handshake ChannelFuture is notified after the right encoder is present in the ChannelPipeline
2012-11-13 09:25:19 +01:00
dantran
105f952f5d
Clean up maven-bungle-plugin warnings
2012-11-12 11:42:42 +01:00
dantran
e236f5b77d
[ #154 ] [ #727 ] Use maven-plugin-plugin to generate OSGi manifest
2012-11-12 09:15:36 +01:00
Trustin Lee
45de76f58d
More helpful IllegalArgumentException message
2012-11-12 16:02:30 +09:00
Trustin Lee
b3be15204d
Fix 'channelFactory already set' error
2012-11-12 15:59:25 +09:00
Trustin Lee
a05064d3eb
Fix more inspection warnings + compilation errors
2012-11-12 13:25:00 +09:00
Trustin Lee
36c8eb02e8
Fix parameter namings + some more
2012-11-12 12:59:37 +09:00
Trustin Lee
6f2840193a
Fix inspection warnings related with JUnit usage
2012-11-12 12:45:06 +09:00
Trustin Lee
aedf8790c3
Fix various Javadoc issues / Do not use argN parameter names
2012-11-12 12:26:19 +09:00
Trustin Lee
ea4a0e3535
Prefer {@code ...} to <code>...</code> / Fix deprecation warnings
2012-11-12 11:51:23 +09:00
Trustin Lee
15642f2cd8
Do not call static methods via instances
2012-11-12 11:23:06 +09:00
Trustin Lee
d78f5a4f76
Optimize imports / Remove britspace
2012-11-12 09:51:59 +09:00
Trustin Lee
9746bb2036
Make a member field final wherever possible
2012-11-12 09:43:55 +09:00
Trustin Lee
4dce19b814
Replace a variable with a constant wherever possible
2012-11-12 09:43:14 +09:00
Trustin Lee
1cb589a950
Replace a loop that runs only once with a single statement (Second take)
...
Fix potential NoSuchElementException
2012-11-12 09:39:16 +09:00
Trustin Lee
18f1b1f1d0
Replace a loop that runs only once with a single statement
2012-11-12 09:35:50 +09:00
Trustin Lee
aa7cd691df
Remove redundant 'else' branches.
2012-11-12 09:31:40 +09:00
Trustin Lee
91a61d7f43
Remove unnecessary qualifiers
2012-11-12 09:11:48 +09:00
Norman Maurer
fa805c4c13
Allow easier use of AIO transport via bootstrap. Related to [ #725 ]
2012-11-10 20:43:53 +01:00
Trustin Lee
1cc104e1c0
Fix a compilation error
2012-11-10 08:51:59 +09:00
Trustin Lee
b4f796c5e3
Use 'x' over "x" wherever possible / String.equals("") -> isEmpty()
2012-11-10 08:03:52 +09:00
Trustin Lee
05c416b674
Add 'static' modifier to the methods that don't need to be member methods
2012-11-10 07:54:33 +09:00
Trustin Lee
f77f13faf0
Make classes static wherever possible
2012-11-10 07:32:53 +09:00
Trustin Lee
0d0eb0abfb
Remove unused imports
2012-11-10 07:05:18 +09:00
Trustin Lee
23883d25ee
Remove various unnecessary qualifiers
2012-11-10 07:03:07 +09:00
Trustin Lee
5c57dd9f0d
Remove redundant field initialization
2012-11-10 06:56:39 +09:00
Trustin Lee
b9fbed49bd
Suppress false positives related with utility class inspections.
...
IntelliJ IDEA inspection for private utility classes seems flawed.
2012-11-10 06:53:34 +09:00
Trustin Lee
958d04a42b
Remove redundant throws clauses / Suppress inspections for some false positives
2012-11-10 06:47:59 +09:00
Trustin Lee
a5a19efb4b
Remove unnecessary this, parenthesis, and semicolons
2012-11-10 02:27:33 +09:00
Trustin Lee
a9cfde97f0
Add missing final modifiers
2012-11-10 02:19:11 +09:00
Trustin Lee
58ba0de659
Remove unnecessarily qualified static access
2012-11-10 01:32:21 +09:00
Trustin Lee
bbcb035246
Prefer isEmpty() over size() == 0 or length() == 0
2012-11-10 01:24:04 +09:00
Trustin Lee
8c0e5626c2
Remove concatenation with empty string
2012-11-09 17:55:28 +09:00
Trustin Lee
57aa842b63
Move private methods only used from inner classes to the inner classes
2012-11-09 17:17:25 +09:00
Norman Maurer
1a7e7a1bff
[ #654 ] Fix race which could lead to some concurrent side-effects like raise a ConcurrentModificationException when using the nio transport
2012-11-07 19:15:11 +01:00
Norman Maurer
313f777491
[maven-release-plugin] prepare for next development iteration
2012-11-05 23:08:39 +01:00
Norman Maurer
57da8222a4
[maven-release-plugin] prepare release netty-4.0.0.Alpha7
2012-11-05 23:08:28 +01:00
Norman Maurer
87cc67306f
[maven-release-plugin] prepare for next development iteration
2012-10-28 18:41:25 +01:00
Norman Maurer
7315490fca
[maven-release-plugin] prepare release netty-4.0.0.Alpha6
2012-10-28 18:41:17 +01:00
Norman Maurer
afc687436a
Revert "[maven-release-plugin] prepare release netty-4.0.0.Alpha6"
...
This reverts commit 95de4db0f1
.
2012-10-28 18:36:15 +01:00
Norman Maurer
16eb4ec713
Revert "[maven-release-plugin] prepare for next development iteration"
...
This reverts commit e3e0776c20
.
2012-10-28 18:35:47 +01:00
Norman Maurer
e3e0776c20
[maven-release-plugin] prepare for next development iteration
2012-10-28 13:06:07 +01:00
Norman Maurer
95de4db0f1
[maven-release-plugin] prepare release netty-4.0.0.Alpha6
2012-10-28 13:05:59 +01:00