Commit Graph

749 Commits

Author SHA1 Message Date
Norman Maurer
565e10e0db Only update interestedOps if needed 2013-02-10 20:42:40 +01:00
Norman Maurer
775856b3db Use the same buffer type in ByteBridge as the context 2013-02-10 17:19:43 +01:00
Norman Maurer
e3b8f4dea8 Make sure all resources of a ByteBridge and MessageBridge are released 2013-02-10 17:12:37 +01:00
Norman Maurer
547d4c20b0 Fix javadocs 2013-02-10 14:40:17 +01:00
Norman Maurer
657f16bf2b Add ChannelGroup.deregister() 2013-02-10 14:40:03 +01:00
Norman Maurer
33c94a98a3 Let FileRegion extend ReferenceCounted and add ChannelGroup.flush() , ChannelGroup.sendFile(..) 2013-02-10 14:25:53 +01:00
Trustin Lee
4f6d05365a Fix a race condition in reference counter implementation / Reference count never goes below 0 2013-02-10 14:22:14 +09:00
Trustin Lee
bd0729ac45 Make ChannelGroup.write(..) retain the message 2013-02-10 14:02:43 +09:00
Trustin Lee
2f1a0b0593 Remove freeInbound/OutboundMessage(), replaced by ReferenceCounted.retain/release()
- Related: #1029
2013-02-10 13:31:31 +09:00
Trustin Lee
b9996908b1 Implement reference counting
- Related: #1029
- Replace Freeable with ReferenceCounted
- Add AbstractReferenceCounted
- Add AbstractReferenceCountedByteBuf
- Add AbstractDerivedByteBuf
- Add EmptyByteBuf
2013-02-10 13:10:09 +09:00
Trustin Lee
61bbb04852 Fix a bug in AbstractEmbeddedChannel where flush failure is not recorded 2013-02-10 00:46:30 +09:00
Trustin Lee
51daf2a6a2 Add ABORT signal to Channel*MessageHandlerAdapter
- Related: #1030
2013-02-09 20:11:16 +09:00
Trustin Lee
139b1b8382 Add begin/endFlush() and closeOnFailedFlush to ChannelOutboundMessageHandlerAdapter / Make ChannelInboundMessageHandlerAdapter stop processing on first exception to avoid excessive exceptionCaught() events against pipelined messages. 2013-02-09 17:31:20 +09:00
Trustin Lee
e424a2f4b3 Move flushTaskInProgress to AbstractUnsafe
.. because it's referenced only there.  Also did tiny optimizations.
2013-02-09 01:27:54 +09:00
Trustin Lee
a4c66dc282 Reduce the number of unnecessary Selector.wakeup() / Fix a bug where channelReadSuspended() generates garbage 2013-02-09 01:05:33 +09:00
Trustin Lee
affd514b8c Rename ByteBufUtil to BufUtil and move ChannelHandlerUtil.freeMessage() there / Remove ChannelHandlerUtil 2013-02-08 23:23:26 +09:00
Trustin Lee
0746199ca4 Remove unreachable code 2013-02-08 23:16:54 +09:00
Trustin Lee
44ea0a116f Replace ChannelHandlerUtil.unfoldAndAdd() with MessageBuf.unfoldAndAdd() / Remove unused methods in ChannelHandlerUtil 2013-02-08 23:07:20 +09:00
Norman Maurer
a3b46ec9d7 Fix a bug where a closed channel was tried to register with the eventloop 2013-02-08 11:31:48 +01:00
Trustin Lee
ff5aec0c78 Replace TypeParameterFinder with TypeParameterMatcher
- We can avoid reflective matching using byte code generation.
 - Better matching performance when message type is Object
2013-02-08 18:28:06 +09:00
Trustin Lee
b4eaedf712 Remove confusing ChannelState/OperationHandlerAdapter.inboundBufferUpdated/flush() implementation 2013-02-08 17:17:39 +09:00
Trustin Lee
76eb40a4d2 Make ChannelOutboundMessageHandlerAdapter similar to ChannelInboundMessageHandlerAdapter 2013-02-08 17:07:01 +09:00
Trustin Lee
71136390f1 Extract type parameter finder code to a utility class 2013-02-08 15:57:23 +09:00
Norman Maurer
1033bec4cd AbstractBootstrap.validate() should return reference to itself 2013-02-08 07:52:35 +01:00
Trustin Lee
fa1b49de98 More robust automatic messageType detection for ChannelInboundMessageHandlerAdapter and MessageToMessageDecoder 2013-02-08 15:45:17 +09:00
Norman Maurer
38ee575839 Let ChannelGroupFuture.addListener(..) return itself to make consistent with ChannelFuture 2013-02-08 07:41:24 +01:00
Norman Maurer
539418ecac Let ChannelPipeline.set* methods return itself to be more consistent with the reset 2013-02-08 07:24:55 +01:00
Norman Maurer
32e0b59761 Let ChannelPipeline implement Iterable 2013-02-08 07:10:46 +01:00
Trustin Lee
e5616c85c4 Automatic messageType detection for ChannelInboundMessageHandlerAdapter 2013-02-08 13:48:47 +09:00
Trustin Lee
df65b93032 Use Message<Object> instead of Message<I> 2013-02-08 13:05:27 +09:00
Trustin Lee
ac72c3512e Ensure ChannelInboundMessageHandlerAdapter.endMessageReceived() is always called after handling the inbound message queue. / Call fireInboundBufferUpdated() automatically if the next inbound message buffer was changed. 2013-02-08 13:03:45 +09:00
Trustin Lee
9319e3ebd0 Fix SocketShutdownOutputByPeerTest failure
- With half-close enabled, the selector loop was spinning due to uncleared OP_READ flag.
 - Added some delay to the test for more reliable failure
2013-02-08 01:50:44 +09:00
Trustin Lee
d8c0bf3be2 Add the 'nextBufferType' parameter to ByteArrayEncoder like did to StringEncoder / Consistent parameter order 2013-02-08 01:36:41 +09:00
Trustin Lee
b8c0751023 Fix a regression where writing a ByteBuf are discarded 2013-02-08 00:41:35 +09:00
Trustin Lee
30e80f8c5c Fix a regression in ChannelInboundMessageHandlerAdapter
- Should forward the unsupported message to the next inbound buffer rather than the next outbound buffer.
2013-02-08 00:08:39 +09:00
Trustin Lee
ec51b359c9 Fix checkstyle again 2013-02-08 00:00:14 +09:00
Trustin Lee
9aa9d8a99b Fix checkstyle
- Basically a workaround for IntelliJ's automatic import optimization
2013-02-07 23:58:21 +09:00
Trustin Lee
d4742bbe16 Clean up abstract ChannelHandler impls / Remove ChannelHandlerContext.hasNext*()
- Rename ChannelHandlerAdapter to ChannelDuplexHandler
- Add ChannelHandlerAdapter that implements only ChannelHandler
- Rename CombinedChannelHandler to CombinedChannelDuplexHandler and
  improve runtime validation
- Remove ChannelInbound/OutboundHandlerAdapter which are not useful
- Make ChannelOutboundByteHandlerAdapter similar to
  ChannelInboundByteHandlerAdapter
- Make the tail and head handler of DefaultChannelPipeline accept both
  bytes and messages.  ChannelHandlerContext.hasNext*() were removed
  because they always return true now.
- Removed various unnecessary null checks.
- Correct method/field names:
  inboundBufferSuspended -> channelReadSuspended
2013-02-07 23:47:45 +09:00
Norman Maurer
a13246a2b6 [#1024] Limit the number of SelectionKey.interestedOps(..) calls for performance reasons 2013-02-07 15:34:38 +01:00
Norman Maurer
fd75615d7a [#870] Convert all modules into osgi bundles 2013-02-06 07:57:11 +01:00
Norman Maurer
46bedb8151 Add javadocs to make contract more clear 2013-02-05 20:29:38 +01:00
Norman Maurer
86b4cde82f Make sure the inbound/outbound buffer of the ChannelHandlerContext is only modified within the EventLoop 2013-02-05 16:19:04 +01:00
Trustin Lee
2e44a1ba91 Fix test failures in SingleThreadEventLoopTest on Windows
- It seems like Windows sometimes sleeps less than specified.
- Related issue: #726
2013-02-05 16:27:37 +09:00
Norman Maurer
ade3cc1329 Move non socket specific stuff out of the socket package 2013-02-01 09:10:28 +01:00
Trustin Lee
2ec932798f Replace .readable() and .writable() to .isReadable() and .isWritable() 2013-01-31 18:24:33 +01:00
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