Trustin Lee
42c65cca3a
Make MessageBuf bounded
...
- Move common methods from ByteBuf to Buf
- Rename ensureWritableBytes() to ensureWritable()
- Rename readable() to isReadable()
- Rename writable() to isWritable()
- Add isReadable(int) and isWritable(int)
- Add AbstractMessageBuf
- Rewrite DefaultMessageBuf and QueueBackedMessageBuf
- based on Josh Bloch's public domain ArrayDeque impl
2013-01-31 18:11:06 +01:00
Norman Maurer
ec013bf2d3
[ #983 ] Force the user to implement an actual ChannelInboundHandler or ChannelOutboundHandler
...
For this ChannelInboundHandler* and ChannelOutboundHandler* was made package private
2013-01-31 15:50:27 +01:00
Trustin Lee
39357f3835
Enable TCP_NODELAY and SCTP_NODELAY by default
...
- Fixes #939
- Add PlatformDependent.canEnableTcpNoDelayByDefault()
- Currently returns false on Android. Will change if necessary later.
2013-01-31 12:17:09 +09:00
Trustin Lee
152c969eab
Make Bootstrap and ServerBootstrap thread-safe
...
- Additional fix for: #970
- Use LinkedHashMap again to save memory consumption
- ServerBootstrap now makes a copy of child parameters so that modifying ServerBootstrap after bind() does not affect the already-bound servers. This also makes child channel initialization potentially faster due to reduced garbage iterator.
2013-01-31 11:34:28 +09:00
Norman Maurer
eeab6767db
Tighten up generics on ServerBootstrap again as it was fixed in UDT
2013-01-30 21:38:15 +01:00
Trustin Lee
33c9f3f1e5
Relax ServerBootstrap type constraint to support UDT properly
2013-01-30 22:04:20 +09:00
Trustin Lee
05d16cd361
Made Bootstrap and ServerBootstrap copy constructors private as suggested
2013-01-30 21:55:10 +09:00
Trustin Lee
b1b0319bbe
Fix build errors and warnings
2013-01-30 21:47:34 +09:00
Norman Maurer
1bb003d9ae
[ #995 ] Replace AtomicReference usage with AtomicReferenceFieldUpdater
...
This will safe as an example 2gb mem when have 10 DefaultHandlerContext instances per connection and the connection count is 1000000.
Also kind of related to [#920 ]
2013-01-30 13:45:39 +01:00
Trustin Lee
23438de66f
Move AbstractBootstrap.ChannelFactory out of AbstractBootstrap and hide AbstractBootstrap from a user
...
- Fixes #998
- Also generified ChannelFactory
2013-01-30 21:40:49 +09:00
Trustin Lee
86135a4080
Make ServerBootstrap final
...
- Related: #997
2013-01-30 21:14:23 +09:00
Trustin Lee
7c50c1e2e6
Make Bootstrap and ServerBootstrap implement Cloneable and rename duplicate() to clone()
...
- Fixes #997
- Replace duplicate() with clone()
- Add copy constructor for simplicity
- Can now clone invalid/incomplete bootstrap
- Upgrade to netty-build-14 to disable SuperClone checkstyle module
- Finalize class hierarchy so no subclasses are introduced
2013-01-30 21:12:42 +09:00
Trustin Lee
64e6c4021d
Use the clearer parameter names that indicate the address is for Internet connections
2013-01-30 20:14:59 +09:00
Trustin Lee
788d7e9b8b
Remove Bootstrap operations that require a promise and add various ad-hoc bind() and connect() operations
...
- Update examples to use the newly added bind() and connect()
operations.
2013-01-30 20:11:00 +09:00
Norman Maurer
a54217053f
[ #988 ] Fix typo
2013-01-28 11:26:53 +01:00
Norman Maurer
d7bfd44e10
[ #982 ] [ #977 ] [ #858 ] Allow to transfer the content a ChannelHandlers inbound/outbound buffer on removal/replacement
...
This changes the behavior of the ChannelPipeline.remove(..) and ChannelPipeline.replace(..) methods in that way
that after invocation it is not possible anymore to access any data in the inbound or outbound buffer. This is
because it empty it now to prevent side-effects. If a user want to preserve the content and forward it to the
next handler in the pipeline it is adviced to use one of the new methods which where introduced.
- ChannelPipeline.removeAndForward(..)
- ChannelPipeline.replaceAndForward(..)
2013-01-28 10:25:38 +01:00
Norman Maurer
a27d1cc365
[ #986 ] DefaultChannelHandlerContext.fireUserEventTriggered(...) uses correct ChannelHandlerContext now
2013-01-26 16:47:00 +01:00
Norman Maurer
cc278d45c2
Disable test as this let fail the build 80% times on osx and slow linux servers. Need to investigate
2013-01-26 16:17:12 +01:00
Norman Maurer
b9aaf9a167
[ #977 ] Stop processing messages/bytes in a loop when the handler was removed from the ChannelPipeline
2013-01-23 07:35:44 +01:00
Norman Maurer
3f72add89a
[ #976 ] Fix exception which will be raised by ChannelInboundHandler.discardInboundReadBytes() and ChannelOutboundHandler.discardOutboundReadBytes() if the handler remove it self from the pipeline
2013-01-23 07:27:00 +01:00
Norman Maurer
a25f7fa2e5
Revert "[ #972 ] Correctly mark the ChannelPipeline once a ChannelHandler was removed and because of this a buffer was freed"
...
This reverts commit 4ac3bace0f
.
2013-01-23 06:45:44 +01:00
Norman Maurer
4ac3bace0f
[ #972 ] Correctly mark the ChannelPipeline once a ChannelHandler was removed and because of this a buffer was freed
2013-01-22 21:18:13 +01:00
Brian Roach
54af70f067
Bootstrap thread safety
...
Changed options and attrs from LinkedHashMap to ConcurrentHashMap to
avoid a possible ConcurrentModificationException if a thread was
adding/removing options/attrs while another was calling Bootstrap.init()
or Bootstrap.duplicate()
2013-01-22 07:06:02 +01:00
Norman Maurer
4192222b38
Rname StreamOioByteChannel to OioByteStreamChannel
2013-01-21 12:10:07 +01:00
Norman Maurer
7316a3c65c
[ #965 ] Allow to adjust the SO_TIMEOUT on the fly
2013-01-21 11:48:05 +01:00
Norman Maurer
082b5f0dff
[ #962 ] Read data as soon as it is present in OIO and not wait till it match Buffer.writableBytes()
...
- Also add a new abstract class called StreamOioByteChannel which can be used by OIO channel implementation which are Stream based as a starting point.
2013-01-21 10:14:21 +01:00
Norman Maurer
57e504a7e6
Add javadocs to the *ChannelConfig interfaces to make clear which ChannelOptions implementations are expect to support
2013-01-20 08:10:15 +01:00
Norman Maurer
76d7829d38
[ #960 ] Fix calculation of writerIndex() which was incorrect and so result in truncated DatagramPackets when using NIO
2013-01-19 17:22:28 +01:00
Norman Maurer
1295f6d331
Fix formatting
2013-01-19 16:52:12 +01:00
Norman Maurer
d8f0e3fdf7
Add missing udp option
2013-01-19 16:51:00 +01:00
Norman Maurer
4dd462d0b5
[ #907 ] Stop flush if one outboundbuffer was freed and do the same for inboundBufferUpdated if an inboundbuffer was freed
2013-01-18 07:08:11 +01:00
Trustin Lee
24acfe7008
Remove io.netty.monitor as discussed in #922
2013-01-18 11:08:57 +09:00
Trustin Lee
2c7be32393
Tiny optimization
2013-01-18 10:49:53 +09:00
Norman Maurer
16f729cd95
[ #907 ] Prevent IllegalBufferAccessException which could be triggered if inboundBufferUpdated() was called once the channel was closed
2013-01-17 20:41:08 +01:00
Norman Maurer
677886f470
[ #907 ] Prevent IllegalBufferAccessException which could be triggered if inboundBufferUpdated(), flush(..), write(..) was triggered after the channel was closed
2013-01-17 15:12:32 +01:00
Trustin Lee
4472fe9795
Remove 'get' prefix
2013-01-17 15:06:46 +09:00
Trustin Lee
f568aa42f0
Hide the constructors of ChannelOption to force using dedicated option type
2013-01-17 14:14:41 +09:00
Norman Maurer
f136eafd5e
[ #943 ] Fix CanceledKeyException which can happen on frequently deregister/register while using the NIO Transport
2013-01-16 15:27:27 +01:00
Norman Maurer
895bce6cd5
[ #917 ] Move transport depending ChannelOption to the specific transport to make it consistent
2013-01-16 08:04:09 +01:00
Trustin Lee
506474f569
Overhaul pipeline implementation for clarity and memory efficiency
...
This pull request cleans up our pipeline implementation by moving most
inter-context traversal code to DefaultChannelHandlerContext.
Previously, outbound traversal was done in DefaultChannelPipeline while
inbound traversal was done in DefaultChannelHandlerContext.
Also, to address the memory inefficiency issue raised in #920 , all
runnables are lazily instantiated.
2013-01-16 00:38:14 +09:00
Trustin Lee
573a723dc2
Fix a bug where ChannelPIpeline.remove/replace() fails when its channel is not registered yet
2013-01-14 21:50:08 +09:00
Trustin Lee
e263769a55
Fix a bug where the buffers are freed too early when a handler is removed or replaced
2013-01-14 21:43:45 +09:00
Trustin Lee
a03bc6ea1d
Fix a bug where freeInbound/OutboundBuffer() is not called when a handler is removed from a pipeline.
2013-01-14 20:54:12 +09:00
Norman Maurer
eb91a6d4e6
[ #924 ] [ #914 ] Fix high CPU usage which was caused because the OP_CONNECT flag was not cleared after the connect was complete
2013-01-11 19:42:21 +01:00
Trustin Lee
64ae8b6a37
Replace and merge DetectionUtil and DirectByteBufUtil into PlatformDependent and PlatformDependent0
...
PlatformDependent delegates the operations requires sun.misc.* to PlatformDependent0 to avoid runtime errors due to missing sun.misc.* classes.
2013-01-11 14:03:27 +09:00
Trustin Lee
8975406b86
Ensure the outbound buffer is not freed on write completion
...
- Fixes #919
2013-01-10 21:05:51 +09:00
Trustin Lee
665d022e82
Use a heap buffer from the allocator because it doesn't seem to cause OOME anymore
2013-01-10 16:23:40 +09:00
Trustin Lee
eb337ff5a7
Fix various inspection warnings
2013-01-10 15:23:58 +09:00
Trustin Lee
3c9d912355
Use InetSocketAddress wherever possible / Tighten the return type of Channel.parent()
2013-01-10 14:17:54 +09:00
Trustin Lee
793a571465
Fix a runtime type cast exception when calling RxtxChannel.local/remoteAddress()
2013-01-10 14:01:17 +09:00