Commit Graph

814 Commits

Author SHA1 Message Date
Norman Maurer
fcd6becad9 [#1136] Fix possible IllegalBufferAccessException when remove itself from the pipeline 2013-03-08 21:55:46 +01:00
Norman Maurer
7b4c83b462 [#1135] Fix endless loop which will get triggered when an exception is thrown during freeHandlerBuffersAfterRemoval 2013-03-08 21:41:59 +01:00
Norman Maurer
fd3f923b52 Allow to specify the used buffer type for ChannelInboundByteBufHandler and ChannelOutboundByteBufHandler by configuration. As default it tries to use a direct ByteBuf 2013-03-08 08:20:46 +01:00
Trustin Lee
a9a29bdf3f Use I/O buffer whenever possible now that our direct buffers are as fast as heap buffers 2013-03-08 11:21:08 +09:00
Trustin Lee
16f4de7adb Use the original stack trace when translating SocketTimeoutException to ConnectTimeoutException 2013-03-08 08:40:28 +09:00
Norman Maurer
61d6c48365 [#1036] Add special ConnectTimeoutException which is thrown if a connection failed because of a timeout 2013-03-07 20:53:45 +01:00
Norman Maurer
9599bfd569 Fix class-cast exception which is a regression introduces in 256c931db2 2013-03-07 11:11:37 +01:00
Trustin Lee
526dafca75 Fix checkstyle 2013-03-07 16:13:44 +09:00
Norman Maurer
88cc8c1739 [#1065] Provide Future/Promise without channel reference 2013-03-07 07:21:37 +01:00
Trustin Lee
148abe52f9 Reduce the amount of memory used for handler names
- Fixes #1123
2013-03-07 12:43:16 +09:00
Trustin Lee
a8a7c4f576 Provide a way to implement an ChannelInbound/OutboundMessageHandler conveniently without extending an adapter class
- Add ChannelHandlerUtil and move the core logic of ChannelInbound/OutboundMessageHandler to ChannelHandlerUtil
- Add ChannelHandlerUtil.SingleInbound/OutboundMessageHandler and make ChannelInbound/OutboundMessageHandlerAdapter implement them.  This is a backward incompatible change because it forces all handler methods to be public (was protected previously)
- Fixes: #1119
2013-03-05 17:27:53 +09:00
Norman Maurer
256c931db2 Move exceptionCaught(..) back to ChannelHandler. Related to [#1118] 2013-03-05 07:34:34 +01:00
Trustin Lee
e4aa941bd4 Simplify ChannelInboundMessageHandlerAdapter.inboundBufferUpdated() implementation 2013-03-05 12:22:57 +09:00
Trustin Lee
0e3825899a Move DefaultChannelPipeline.notifyHandlerException() to DefaultChannelHandlerContext / Always trigger exceptionCaught() at the handler that raised an exception
- Related: #1118
2013-03-05 12:13:14 +09:00
Norman Maurer
1603d9792d Move methods from ChannelHandler to ChannelStateHandler like proposed in [#1107] 2013-03-04 07:28:10 +01:00
Norman Maurer
3ac78b030a Improve javadocs 2013-03-01 22:30:45 +01:00
Norman Maurer
03525f4b64 Fix javadocs 2013-03-01 21:42:08 +01:00
Norman Maurer
cb202da832 [#1036] Use SocketTimeoutException when a connection timeout is detected to make it easier to detect timeout vs refused 2013-02-27 10:19:26 +01:00
Norman Maurer
dc4c4ab6b9 [#1094] Fix possible StackOverFlowError when send FileRegions via the AioSocketChannel 2013-02-27 07:52:42 +01:00
Norman Maurer
71f25d13e2 [#1095] Fix AioCompletionHandler stackoverflow detection to executed callback methods in all cases 2013-02-27 07:52:01 +01:00
Trustin Lee
671f9d48d4 Use ConcurrentHashMapV8 wherever possible
- Fixes #1052
2013-02-26 15:54:51 -08:00
Trustin Lee
f67441354a Move logging classes from internal to internal.logging
.. because internal is crowded
2013-02-26 14:54:25 -08:00
Trustin Lee
334b6c3129 Reduce the memory footprint of DefaultChannelPromise even more (part 2)
- Rewirte DefaultChannelFutureListeners - this saves another int field when there are more then one listener.
2013-02-26 14:43:12 -08:00
Trustin Lee
d8f5521210 Reduce the memory footprint of DefaultChannelPromise even more
- Merge waiters and fluchCheckpoint into a single field
- This limits the number of waiter threads to 2^24 - 1, which is still very large.  Can you imagine an application with 16 million threads?
2013-02-26 13:52:49 -08:00
Trustin Lee
98192d7c01 Simplify DefaultChannelPromise
- Merge success0() and failure0() into set()
- Remove unnecessary local variable
2013-02-26 13:05:58 -08:00
Trustin Lee
709f2dfb33 Add comment about why we need to count the depth of the stack in AioCompletionHandler 2013-02-26 11:28:49 -08:00
Trustin Lee
0317baa10d Fix regression in AioCompletionHandler that leads to StackOverflowError 2013-02-26 10:19:59 -08:00
Trustin Lee
434610b18c Tell what the remote address was when ConnectException occurs.
- Fixes #1082
2013-02-22 13:45:17 -08:00
Norman Maurer
12b392b4cc Revert "[#1058] Add Channel/ChannelHandlerContext/ChannelPipeline.isWritable()"
This reverts commit 4e36fbca58.
2013-02-22 14:42:32 +01:00
Norman Maurer
03b7b2d297 Revert "[#1058] Fix incorrect logic to detect if ChannelHandlerContext is writable"
This reverts commit 3acb22c38c.
2013-02-22 14:41:05 +01:00
Norman Maurer
fada776756 Refactor the aio transport to not depend on the AioChannelFinder and so not need for refelection 2013-02-22 06:53:33 +01:00
Trustin Lee
273948055a Fix #1075: DefaultChannelHandlerContext.fireChannelSuspended and fireInboundBufferUpdated do not work correctly if handlers with EventExecutor are added or removed from pipeline. 2013-02-21 17:16:05 -08:00
Trustin Lee
08e2914cef Do not keep Runnables for the events that are triggered only once in most cases 2013-02-21 15:58:15 -08:00
Trustin Lee
dfbe4e48ae Remove cruft 2013-02-21 15:53:50 -08:00
Trustin Lee
0f46d4b379 Revert 25c7a783a7 and fix #1064 differently
- Rename inbound/outboundBufferFreed to inbound/OutboundShutdown which makes more sense
- Move DefaultChannelHandlerContext.isInbound/OutboundBufferFreed() to DefaultChannelPipeline
- Fix a problem where invokeFreeInbound/OutboundBuffer() sets inbound/outboundShutdown too early (this was the direct cause of #1064)
- Remove the volatile modifier - DCHC.prev/next are volatile and that's just enough
2013-02-21 15:19:42 -08:00
Norman Maurer
3acb22c38c [#1058] Fix incorrect logic to detect if ChannelHandlerContext is writable 2013-02-21 15:55:04 +01:00
Norman Maurer
25c7a783a7 Fix unneccessary use of EventLoop.execute(..) which gives some nice perf boost and also fix [#1064] as we had a race 2013-02-21 15:53:04 +01:00
Norman Maurer
5bda3a25b0 add more debug info about discarded message 2013-02-19 19:08:04 +01:00
Norman Maurer
4e36fbca58 [#1058] Add Channel/ChannelHandlerContext/ChannelPipeline.isWritable() 2013-02-17 21:13:03 +01:00
Trustin Lee
60ee9460a9 Outbound bridge is flushed only when its handler also implements ChannelInboundHandler
- Fixes #1056
2013-02-15 16:24:59 -08:00
Trustin Lee
189c2785c0 ByteBridge.flush() does not flush anything if the target buffer is not writable but expandable
- Fixes #1055
- fire inboundBufferUpdated() again if the bridge was not flushed completely.
2013-02-15 15:50:12 -08:00
Trustin Lee
dc43c2d8a9 ByteBridge.flush() does not flush anything if the target buffer is not writable but expandable
- Fixes #1055
2013-02-15 15:00:41 -08:00
Trustin Lee
1011227b88 Remove apiviz tags - we are focusing on user guide instead and putting diagrams there 2013-02-14 12:09:16 -08:00
Trustin Lee
7b0bf2da7e Use double-checked locking idiom + volatile optimization 2013-02-13 23:19:01 -08:00
Trustin Lee
4eff91df99 Fix a bug where DefaultChannelPromise.failure0() always returns false / Revert a bad commit 2013-02-13 22:53:10 -08:00
Trustin Lee
53c27ef5ae More robust type parameter detection
- Also removed unnecessary constructors which were added due to incomplete type parameter detection logic
2013-02-13 19:02:55 -08:00
Trustin Lee
d0a3c2d95e Reduce the memory footprint of DefaultChannelPromise 2013-02-13 16:38:20 -08:00
Trustin Lee
e2c948782b Fix a problem where flush future is set more than once 2013-02-13 16:36:53 -08:00
Trustin Lee
6fe6456f8d Fix indentation 2013-02-13 15:33:09 -08:00
Trustin Lee
7cefd10d9f Fill/flush bridges only when necessary 2013-02-13 15:32:35 -08:00
Trustin Lee
87efff0bca DefaultChannelHandlerContext.removed doesn't need to be volatile 2013-02-13 15:17:10 -08:00
Trustin Lee
dc8ae16e61 Make inByte/MsgBuf final 2013-02-13 15:16:40 -08:00
Trustin Lee
a3cb3651d0 Use promise.isDone() instead of additional flag / Remove printStackTrace 2013-02-13 14:44:59 -08:00
Norman Maurer
7cf7d7455d [#1048] Make sure the promise is not notified multiple times on failure 2013-02-12 20:46:39 +01:00
Norman Maurer
17e37fdfe6 [#1047] Not process with flush on failure 2013-02-12 20:34:59 +01:00
Norman Maurer
30bcc72b44 [#1038] Remove ChannelHandlerContext.replace*Buffer() methods 2013-02-11 14:16:45 +01:00
Trustin Lee
b4f4b95739 Move io.netty.logging to io.netty.internal / Move Signal out of internal because we use it in Channel*MessageAdapters 2013-02-11 20:08:18 +09:00
Roman Stoffel
5f89195247 Fixing generic <> in documentation to display properly 2013-02-11 19:54:32 +09:00
Trustin Lee
4aacf50758 Prettify APIviz diagrams / Remove an empty package 2013-02-11 18:33:15 +09:00
Norman Maurer
f98da73612 Allow for method chaining 2013-02-11 09:44:04 +01:00
Norman Maurer
707f910d2b Make Channel*Invoker package private 2013-02-11 09:31:01 +01:00
Trustin Lee
bf0bfe9a69 Fix inspector warnings 2013-02-11 16:52:43 +09:00
Norman Maurer
a22725d9fa Let ChannelPromiseAggregator take a vararg of ChannelPromises and rename method 2013-02-11 07:33:22 +01:00
Norman Maurer
df53d6d7c5 Tighten up visibility 2013-02-11 07:29:13 +01:00
Norman Maurer
9228c97546 Tighten up visibility 2013-02-11 07:27:05 +01:00
Norman Maurer
0e47fb50e2 Tighten up visibility 2013-02-11 07:26:10 +01:00
Norman Maurer
7e95be0295 Support method chaining in ChannelFlushPromiseNotifier 2013-02-11 07:22:12 +01:00
Norman Maurer
ba71e3dcd0 Don'T call ChannelPipeline.fireExceptionCaught(..) for outbound events 2013-02-11 07:19:40 +01:00
Trustin Lee
0e341c9d72 Fix covariant return types in ChannelConfig interfaces for method chaining
- Does it really worth doing this? I'm tempted to remove support for method chaining for ChannelConfig.
2013-02-11 15:08:51 +09:00
Trustin Lee
dea1fde604 Self-referential type parameter fix 2013-02-11 14:42:29 +09:00
Trustin Lee
a7b5d45bdf A little bit of optimization that reduces interestOps() calls 2013-02-11 10:39:50 +09:00
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