Jeff Pinner
241f856cc7
remove AbstractChannel#doPreClose
2013-07-26 10:12:01 +02:00
Norman Maurer
fabefba791
[ #1650 ] Make it possible to override isSharable() to simplify things for clojure users
2013-07-25 20:24:27 +02:00
Norman Maurer
6ff87cc20d
Small optimitation to limit volatile reads
2013-07-25 09:28:54 +02:00
Trustin Lee
5e4169802f
Fix potential reentrance issue in ChannelOutboundBuffer
2013-07-24 11:26:03 +09:00
Norman Maurer
0b17586731
[ #1623 ] Fix javadocs for ChannelGroup
2013-07-23 09:03:42 +02:00
Trustin Lee
7903697c36
Remove Arrays.fill(..., null)
...
.. because we can just set each element to null while looping
2013-07-23 15:09:14 +09:00
Trustin Lee
a89b17fa94
Merge ChannelOutboundBuffer.failUnflushed() and recycle() into a single method and make sure it is run later on reentrance
...
- Previously, failUnflushed() did not run when inFail is true, which made unflushed writes are not released on reentrance. This has been fixed by this commit.
- Also, AbstractUnsafe.outboundBuffer is set to null as early as possible to remove the chance of any write attempts made after the closure.
2013-07-23 14:34:10 +09:00
Trustin Lee
d4aa5b53d6
Simplify the validation logic proposed in 25f96b1644
2013-07-23 13:48:22 +09:00
kerr
ada07cb9e0
Fix types in javadocs
2013-07-22 19:14:36 +02:00
Norman Maurer
25f96b1644
[ #1606 ] Reduce overhead during writes because of ChannelPromise validation
2013-07-22 11:28:02 +02:00
Norman Maurer
81612f8e9b
[ #1624 ] Fix resource leak when writing to a closed / not-open channel
2013-07-22 10:59:06 +02:00
Norman Maurer
0f6cc0cc7b
[ #1630 ] Fix re-entrance bug in ChannelOutboundBuffer.remove(...)
2013-07-22 10:44:33 +02:00
tsingxu
125070958d
Fix up ChannelPipeline javadocs by add lost "don't "
2013-07-22 07:14:42 +02:00
Norman Maurer
7f86550ef8
[ #1619 ] Fix bug in ChannelOutboundBuffer which could lead to invalid write order when fireChannelWritabilityChanged() write another message
2013-07-20 10:03:53 +02:00
Norman Maurer
60529ac3ee
Fix checkstyle
2013-07-20 08:09:08 +02:00
Jeff Pinner
6c9c151d66
minor documentation cleanup
2013-07-20 08:01:14 +02:00
Norman Maurer
4d69848aec
Fix broken javadocs
2013-07-19 07:40:12 +02:00
Trustin Lee
19c92ceb59
Separate 'progress total' and 'pending number of bytes'
...
- Reverted the recent changes in AbstractChannel.calculateMessageSize()
2013-07-19 14:09:08 +09:00
Trustin Lee
762adfcb69
Update HttpStaticFileServer example / Fix bugs related with progress notification
...
- Fix a bug in DefaultProgressivePromise.tryProgress() where the notification is dropped
- Fix a bug in AbstractChannel.calculateMessageSize() where FileRegion is not counted
- HttpStaticFileServer example now uses zero copy file transfer if possible.
2013-07-19 13:21:32 +09:00
Trustin Lee
f96a8e5951
Implement ProgressivePromise notification in NIO byte channels and ChunkedWriteHandler
...
- Refine the contract of GenericProgressiveFutureListener.
- Negative 'total' now means 'unknown', which is useful for ChunkedWriteHandler.
2013-07-19 12:53:23 +09:00
Trustin Lee
0653efcd75
Even better promise validation messages
2013-07-19 09:38:25 +09:00
Trustin Lee
d5e202d755
Better promise validation messages
2013-07-19 09:37:56 +09:00
Trustin Lee
faf8b76b5a
Fix a potential bug where AbstractUnsafe.flush0() fails to clear the inFlush0 flag
...
- Fixes #1609
2013-07-19 08:56:17 +09:00
Trustin Lee
8178322c5c
A little bit of Javadoc for ChannelOutboundBuffer
2013-07-19 01:17:00 +09:00
Trustin Lee
fef838f197
Make sure channelInactive() and channelDeregistered() are triggered even if outboundBuffer.recycle() fails
2013-07-19 01:09:19 +09:00
Trustin Lee
8828d5327a
Move inFlush0 and outboundBuffer in AbstractChannel to AbstractUnsafe
...
.. because they are accessed by AbstractUnsafe much more often.
2013-07-18 23:33:39 +09:00
Trustin Lee
5e5df6bd09
Fix NPE
2013-07-18 23:29:13 +09:00
Trustin Lee
4cd7e62555
Make ChannelOutboundBuffer recycled
2013-07-18 23:26:45 +09:00
Trustin Lee
46ea0d4e7b
Implement gathering writes in NioSocketChannel
...
- Add some support methods in ChannelOutputBuffer
2013-07-18 23:14:39 +09:00
Trustin Lee
4f0a952241
Checkstyle
2013-07-18 21:01:01 +09:00
Trustin Lee
bcef796dc7
Rewrite ChannelOutboundBuffer
...
- Merge MessageList into ChannelOutboundBuffer
- Make ChannelOutboundBuffer a queue-like data structure so that it is nearly impossible to leak a message
- Make ChannelOutboundBuffer public so that AbstractChannel can expose it to its subclasses.
- TODO: Re-enable gathering write in NioSocketChannel
2013-07-18 20:59:14 +09:00
Trustin Lee
568166d554
Cleanup
2013-07-18 10:29:34 +09:00
Trustin Lee
473af5c98e
Fix checkstyle
2013-07-18 10:25:16 +09:00
Trustin Lee
e28594952b
Make the cleanup logic in ChannelOutboundBuffer more robust
...
- Fixes #1601
2013-07-18 10:23:26 +09:00
Trustin Lee
9c8d980a74
Fix a bug where a ChannelFutureListener can allow Unsafe.close() and Unsafe.flush() to overlap and reenter from flush() to close().
...
- Fixes #1600
2013-07-18 10:14:55 +09:00
Trustin Lee
88cbdb50d2
Fail unflushed writes with ClosedChannelException
...
... instead of cryptic exception message.
2013-07-17 21:25:51 +09:00
Trustin Lee
5f235eafc3
Fix checkstyle
2013-07-17 21:17:52 +09:00
Trustin Lee
31ecd17212
Fix test failure
2013-07-17 21:16:52 +09:00
Trustin Lee
cc9b9567b9
Make sure all write attempts made after a channel is closed are marked as failure
2013-07-17 21:14:07 +09:00
Trustin Lee
a8d67b0282
Fix data structure corruption and resource leak in ChannelOutboundBuffer
2013-07-17 21:02:56 +09:00
Trustin Lee
dcf7896172
Do not close ServerChannel on IOException while accepting an incoming connection
...
.. so that we can recover from 'too many open files'
- Fixes #1578
2013-07-16 18:39:29 +09:00
Norman Maurer
2de491aa7f
Use UnpooledByteBufAllocator as default
2013-07-15 10:44:33 +02:00
Norman Maurer
d5f052f39c
Rename ChannelGroupMatcher to ChannelMatcher
2013-07-15 10:42:36 +02:00
Norman Maurer
9dfad35423
Fix checkstyle
2013-07-14 18:32:10 +02:00
Norman Maurer
75997545ed
Fix checkstyle
2013-07-14 18:13:47 +02:00
Norman Maurer
c20c852602
More javadoc fixes
2013-07-14 18:04:33 +02:00
Norman Maurer
43d22f6d23
Remove unused class which was package private anyway
2013-07-14 17:54:07 +02:00
Norman Maurer
a07abee55f
Add and correct javadocs
2013-07-13 19:42:02 +02:00
Norman Maurer
2af7db361b
[ #1573 ] Fix NPE which could be triggered one failed promises that trigger a close89
2013-07-12 22:57:03 +02:00
Norman Maurer
2871079c4a
[ #1557 ] Make the contract of Channel.Unsafe.flush() more clear
...
* Remove boolean parameter from Channel.Unsafe.flush() method
* Move NIO related things to AbstractNioChannel.NioUnsafe
2013-07-12 19:45:31 +02:00
Trustin Lee
660729bd56
Kill the cruft
2013-07-12 20:41:29 +09:00
Trustin Lee
456994607b
|| -> &&
2013-07-12 20:32:49 +09:00
Trustin Lee
99716993f6
Add a boolean parameter to Channel.Unsafe.flush() so that SelectionKey state check can be bypassed.
2013-07-12 20:14:50 +09:00
Trustin Lee
e10e9d38c4
Fix embarassing compilation error :-/
2013-07-12 20:12:18 +09:00
Trustin Lee
85a2ba3752
Remove dead code
...
- Fixed #1557
2013-07-12 20:10:39 +09:00
Trustin Lee
6d1220b55e
Reduce garbage in AbstractUnsafe.flush0()
2013-07-12 20:04:01 +09:00
Trustin Lee
529d904d29
Fix a bug where ChannelOutboundBuffer.addFlush() is called multiple times
2013-07-12 20:01:38 +09:00
Trustin Lee
e2fcb06d9a
Remove unnecessary try-catch block in AbstractUnsafe.flush()
2013-07-12 20:00:30 +09:00
Norman Maurer
43f12569aa
Cache flush(..) tasks which are used when executing with different EventExecutor to lower GC pressure
2013-07-12 11:57:33 +02:00
Norman Maurer
aa64c13bb8
Cleanup
2013-07-12 11:48:26 +02:00
Norman Maurer
d23c3b3382
Introduce ChannelGroupMatcher which can be used to only apply operations of a ChannelGroup on matching Channels.
...
This is often useful if you for example use a ChannelGroup to hold all connected Channels and want to broadcast a message too all of them
except one Channel.
2013-07-11 10:58:53 +02:00
Norman Maurer
12ea35fd5f
Add missing javadocs
2013-07-11 10:26:10 +02:00
Jeff Pinner
224f05e626
Use correct permission mode for java files
2013-07-10 21:58:12 +02:00
Trustin Lee
b7a7c33fe3
Fix a bug in ChannelOutboundBuffer.addFlush()
...
It should not advance the tail if no write() was issued so far.
2013-07-11 01:05:26 +09:00
Norman Maurer
b57d9f307f
Allow per-write promises and disallow promises on flush()
...
- write() now accepts a ChannelPromise and returns ChannelFuture as most
users expected. It makes the user's life much easier because it is
now much easier to get notified when a specific message has been
written.
- flush() does not create a ChannelPromise nor returns ChannelFuture.
It is now similar to what read() looks like.
2013-07-11 00:49:48 +09:00
Norman Maurer
dd763698dc
Adjust ChannelGroup to behave the same like a Channel in terms of write and flush
2013-07-10 08:27:11 +02:00
Trustin Lee
7bedd8f28e
Simplify the exception handling of ChannelOutboundHandler.write()
...
DefaultChannelHandlerContext does not trigger exceptionCaught() immediately when ChannelOutboundHandler.write() raises an exception. It just records the exception until flush() is triggered. On invokeFlush(), if there's any exception recorded, DefaultChannelHandlerContext will fail the promise without calling ChannelOutboundHandler.flush(). If more than one exception were raised, only the first exception is used as the cause of the failure and the others will be logged at warn level.
2013-07-10 00:36:47 +09:00
Trustin Lee
26e9d70457
Remove channelReadSuspended / Rename messageReceived(Last) to channelRead(Complete)
...
- Remove channelReadSuspended because it's actually same with messageReceivedLast
- Rename messageReceived to channelRead
- Rename messageReceivedLast to channelReadComplete
We renamed messageReceivedLast to channelReadComplete because it
reflects what it really is for. Also, we renamed messageReceived to
channelRead for consistency in method names.
2013-07-09 23:58:51 +09:00
Trustin Lee
cbd8817905
Remove MessageList from public API and change ChannelInbound/OutboundHandler accordingly
...
I must admit MesageList was pain in the ass. Instead of forcing a
handler always loop over the list of messages, this commit splits
messageReceived(ctx, list) into two event handlers:
- messageReceived(ctx, msg)
- mmessageReceivedLast(ctx)
When Netty reads one or more messages, messageReceived(ctx, msg) event
is triggered for each message. Once the current read operation is
finished, messageReceivedLast() is triggered to tell the handler that
the last messageReceived() was the last message in the current batch.
Similarly, for outbound, write(ctx, list) has been split into two:
- write(ctx, msg)
- flush(ctx, promise)
Instead of writing a list of message with a promise, a user is now
supposed to call write(msg) multiple times and then call flush() to
actually flush the buffered messages.
Please note that write() doesn't have a promise with it. You must call
flush() to get notified on completion. (or you can use writeAndFlush())
Other changes:
- Because MessageList is completely hidden, codec framework uses
List<Object> instead of MessageList as an output parameter.
2013-07-09 23:51:48 +09:00
Trustin Lee
7396f9f2b2
Remove Channel.id completely / Use 64-bit hashCode internally to reduce the chance of collision in compareTo()
2013-07-09 14:49:06 +09:00
Norman Maurer
9c1b31d20a
[ #1535 ] Remove Channel.id() and so fix the possible leakage of the previous used Channel id map
...
The user can still use Channel.hashCode() for logging. It's just not 100% unique but should be good enough for most cases
2013-07-08 14:07:18 +02:00
Norman Maurer
39b57b889c
[ #1539 ] Fix bug in DefaultChannelGroup.close() which was blocking the close() call on ServerChannel
2013-07-08 13:36:39 +02:00
Trustin Lee
a52ac692a9
Faster MessageList iteration in NioSocketChannel.doWrite()
2013-07-07 15:15:52 +09:00
Trustin Lee
2b2f8db5d2
Use ThreadLocalRandom where possible
2013-07-07 12:37:36 +09:00
Norman Maurer
086ae3536c
[ #1533 ] Introduce ByteBufHolder.duplicate() and make use of it in DefaultChannelGroup.write(...)
2013-07-06 21:17:51 +02:00
Trustin Lee
eb8df35f21
Use MessageList.first() and last() wherever possible
...
- Related issue: #1530
2013-07-05 14:11:09 +09:00
Trustin Lee
b7e6a86c1e
Add MessageList.first() and last() for convenience.
...
- Fixes #1530
2013-07-05 14:07:51 +09:00
Trustin Lee
0b9235f072
Simplify ByteBufProcessor and MessageListProcessor and Add internal component accessors to CompositeByteBuf
...
- Fixes #1528
It's not really easy to provide a general-purpose abstraction for fast-yet-safe iteration. Instead of making forEachByte() less optimal, let's make it do what it does really well, and allow a user to implement potentially unsafe-yet-fast loop using unsafe operations.
2013-07-05 14:00:46 +09:00
Norman Maurer
2bda1b530a
[ #1523 ] Fix bug which lead to have SelectedKeys handled two times and so caused a NPE on heavy load
2013-07-04 16:15:33 +02:00
Norman Maurer
08b75e594c
[ #1519 ] VoidChannelPromise don't fire CancellationException anymore which was incorrect
2013-07-04 09:32:38 +02:00
Norman Maurer
cea873286e
[ #1517 ] Only fire the exception throught the pipeline if the channel is registered when using VoidChannelPromise
2013-07-04 09:20:24 +02:00
Trustin Lee
998b408db3
Fix NPE in OioByteStreamChannel
...
- Do not assign null to 'is' and 'os' but assign an alternative stream implementation
2013-07-04 12:04:28 +09:00
Norman Maurer
7ec12d327f
Remove deprecated ByteBufUtil.release(..) and ByteBufUtil.retain(..) methods and its usage. Also fix a problem where an object would have been released two times.
...
* The problem with the release(..) calls here was that it would have called release on an unsupported message and then throw an exception. This exception will trigger ChannelOutboundBuffer.fail(..), which will also try to release the message again.
* Also use the same exception type for unsupported messages as in other channel impls.
2013-07-03 10:00:13 +02:00
Trustin Lee
956c0f8b90
Better explanation of reentrance issue of ChannelOutboundBuffer
2013-07-02 17:22:56 +09:00
Norman Maurer
5437835832
[ #1501 ] Fix NPE correctly which could accour if ChannelOutboundBuffer.fail(..) triggered another call to ChannelOutboundBuffer.fail(...)
2013-07-02 09:58:41 +02:00
Norman Maurer
8dfbcbda29
[ #1501 ] Fix NPE which could accour if ChannelOutboundBuffer.fail(..) triggered another call to ChannelOutboundBuffer.fail(...)
2013-07-02 09:32:34 +02:00
Trustin Lee
efd9c94775
Use higher maxMessagesPerRead as default for ServerChannels
...
- Fixes #1493
2013-07-02 10:20:15 +09:00
Trustin Lee
26b56d3add
Fix a bug in MessageList.add(T[])
...
- where it uses incorrect source index while iteration
2013-07-02 10:11:17 +09:00
Trustin Lee
720de2e6cc
Add missing sanity check for DefaultChannelHandlerContext.write(...)
2013-07-02 09:36:01 +09:00
Trustin Lee
4b11aff08f
Less confusing log messages for system properties
...
- Fixes #1502
2013-07-02 09:23:29 +09:00
Norman Maurer
5d88c423df
[ #1500 ] Remove @deprecated methods
2013-07-01 08:53:02 +02:00
Norman Maurer
617ab6321b
[ #1489 ] Correctly handle channelReadSuspended and channelWritabilityChanged in CombinedChannelDuplexHandler
2013-06-30 17:18:33 +02:00
Trustin Lee
ea963c25c9
Improve Javadoc of ChannelPipeline
...
- Fixes #1226
2013-06-28 22:09:00 +09:00
Trustin Lee
5f1aa6afde
Remove potentially misleading exception message
...
.. because the MessageList itself is not read-only.
2013-06-28 21:25:15 +09:00
Trustin Lee
591dce565a
checkExclusive() -> checkIndex()
2013-06-28 21:17:18 +09:00
Trustin Lee
d4665f1703
Fix test failures
2013-06-28 21:14:23 +09:00
Trustin Lee
1e0146da3e
Optimize MessageList.add(MessageList, int, int)
2013-06-28 20:53:57 +09:00
Trustin Lee
7cf88a1a3c
Add MessageList.array() / Rewrite MessageList.add(T[], int, int)
...
- MessageList.array() should give better performance + concise code
- MessageList.add(T[], int, int) iterated over the source array 3 times at worst case. This commit reduces that to 1 time.
2013-06-28 20:47:19 +09:00
Trustin Lee
0dcf352f4c
Vastly simplified ByteBufProcessor and MessageListProcessor
...
- Related: #1378
- They now accept only one argument.
- A user who wants to use a buffer for more complex use cases, he or she can always access the buffer directly via memoryAddress() and array()
2013-06-28 20:29:00 +09:00
Trustin Lee
52691488ee
Update Javadoc of ByteBufProcessor and MessageListProcessor
...
- in response to @shacharo's suggestion
2013-06-27 19:01:01 +09:00
Trustin Lee
4dd9b6ef2e
Add ByteBufProcessor and ByteBuf.forEach(...)
...
- Fixes #1378
- Needs to provide optimized forEach implementations though.
2013-06-27 13:55:42 +09:00
Trustin Lee
734ec51ac9
Allow specifying 0 as the default number of threads when instantiating an EventLoopGroup
...
- Fixes #1426
- We already allow a user instantiate an EventLoopGroup with the default number of threads via the default constructor, so I think it's OK although it's not always optimal.
2013-06-27 10:39:39 +09:00
Trustin Lee
bc483724f4
Improve the documentation of MessageList
...
- Fixes #1459
2013-06-25 18:27:29 +09:00
Trustin Lee
1f27c3b390
Make NioByteUnsafe.read() respect ChannelConfig.maxMessagesPerRead and adjust the default from 16 to 1
...
- Fixes #1486
- Decreased the default from 16 to 1 because unnecessary extra read on req-res protocols results in lower throughput due to extra syscalls.
2013-06-25 18:08:39 +09:00
Trustin Lee
a1632e7d15
Add ChannelConfig.maxMessagesPerRead and ChannelOption.MAX_MESSAGES_PER_READ
...
- Fixes #1486
- Make sure AbstractNioMessageChannel.NioMessageUnsafe.read() only up to maxMessagesPerRead
2013-06-25 17:49:28 +09:00
Trustin Lee
c77f03d886
Fix AdaptiveRecvByteBufAllocator.getSizeTableIndex()
2013-06-25 11:07:15 +09:00
Norman Maurer
c9d01b2fb5
[ #1461 ] Correctly handle DefaultChannelGroup.write(..) of ByteBuf and ByteBufHolder
2013-06-25 11:07:14 +09:00
Trustin Lee
cfb3b977a1
Fix the catastrophic failure caused by AdaptiveRecvByteBufAllocator.getSizeTableIndex()
2013-06-25 11:07:14 +09:00
Trustin Lee
a2f232720b
Make AdaptiveRecvByteBufAllocator's lookup table simpler / Optimize buffer size normalization
...
- No need to have fine-grained lookup table because the buffer pool has
much more coarse capacities available
- No need to use a loop to normalize a buffer capacity
2013-06-25 11:07:14 +09:00
Trustin Lee
a969613540
Merge ChannelInboundConsumingHandler into SimpleChannelInboundHandler
...
- SimpleChannelInboundHandler now has a constructor parameter to let a
user decide to enable automatic message release. (the default is to
enable), which makes ChannelInboundConsumingHandler of less value.
2013-06-25 11:07:14 +09:00
Norman Maurer
bfc9c6d80d
Add ChannelInboundConsumingHandler
...
..which is useful when the handler is placed at the last position of the
pipeline because it releases the received messages automatically.
2013-06-25 11:07:14 +09:00
Tony Rice
6c5c119f8c
Fix incorrect parameter validation in DefaultFileRegion
2013-06-25 11:07:14 +09:00
Norman Maurer
cce74efded
[ #1448 ] Don't print failure if VoidChannelPromise is used
2013-06-16 14:25:02 +02:00
Norman Maurer
6a9f965f9b
Introduce new utility class calles ReferenceCountUtil and move utility methods from ByteBufUtil to it.
...
The ones in ByteBufUtil were marked as @deprecated
2013-06-14 07:07:33 +02:00
Norman Maurer
4bf5003f76
Don't release messages before throw UnsupportedOperationException, as the caller method will take care
2013-06-14 06:41:27 +02:00
Trustin Lee
fe40d4b67f
Make sure writing to a closed channel does not trigger an UnsupportedOperationException
...
- Fixes #1442
2013-06-14 11:15:46 +09:00
Trustin Lee
25c51279cf
Revert "[ #1442 ] Make sure closing the channel will not cause an UnsupportedOperationException"
...
This reverts commit a1a86b9de4
because the
semantic of ctx.isRemoved() is confusing to a user - why is
ctx.isRemoved() false when handlerRemoved() is invoked? A better
solution would be check if the connection is inactive and mark the
promise as failure before attempting to write anything.
2013-06-14 10:47:31 +09:00
Trustin Lee
a0c082497a
Remove unused exception classes
2013-06-14 10:21:41 +09:00
Norman Maurer
8edee3272a
More javadoc fixes
2013-06-13 20:56:17 +02:00
Norman Maurer
dc070a00b2
Deprecate IncompleteFlushException as its not used anymore
2013-06-13 20:50:21 +02:00
Norman Maurer
9100256a56
Javadocs cleanup
2013-06-13 20:49:05 +02:00
Norman Maurer
0e16b22aa1
Deprecate NoSuchBufferException as it's not used anymore
2013-06-13 20:48:54 +02:00
Norman Maurer
a1a86b9de4
[ #1442 ] Make sure closing the channel will not cause an UnsupportedOperationException
2013-06-13 18:10:56 +02:00
Trustin Lee
427d9c4bf2
Fix test failures and reported leaks
2013-06-13 15:18:11 +09:00
Trustin Lee
f178b8d421
Suppress duplicate warning message printed when a message reaches at the end of pipeline
2013-06-13 13:23:52 +09:00
Trustin Lee
175526b6bd
Move ReferenceCounted and AbstractReferenceCounted to io.netty.util
...
- Fixes #1441
- Also move and rename IllegalBufferAccessException to ReferenceCountException
- Prettier reference count exception messages
2013-06-13 13:14:21 +09:00
Trustin Lee
283feda119
Reduce even more garbage by exposing ByteBuf.internalNioBuffer()
2013-06-13 12:40:26 +09:00
Trustin Lee
5131c024fa
Tiny optimization
2013-06-13 12:15:41 +09:00
Trustin Lee
96380e756c
Fix test failures introduced by 78d8f05c21
2013-06-13 11:51:03 +09:00
Trustin Lee
2088d1b491
Generate less garbage when performing gathering writes
2013-06-13 10:27:10 +09:00
Norman Maurer
d1a3806ebd
Make use of gathering writes if a MessageList which only contains ByteBuf msgs is written to a NioSocketChannel
2013-06-12 09:45:33 +02:00
Trustin Lee
79e236dfc2
Make EventExecutor.shutdownGracefully() return Future
...
- Also added EventExecutor.terminationFuture()
- Also fixed type signature problem with Future.add/removeListener()
- Related issue: #1389
2013-06-12 08:00:54 +09:00
Trustin Lee
fd0084ecfa
Remove the constructors that uses ImmediateEventExecutor from DefaultChannelGroup
...
.. which is incorrect in my opinion.
+ minor cleanup
2013-06-12 06:50:38 +09:00
Trustin Lee
7a1550631d
Make write operation cancellation while it's in progress
...
.. which should be useful when writing a large buffer/file
2013-06-12 04:24:07 +09:00
Norman Maurer
5b978497f8
Cleanup
2013-06-11 16:24:06 +02:00
Trustin Lee
c3034c8964
Implement the cancellation of connection attmpe for NIO and OIO transport
...
- Related issue: #1432
- Also added test cases to validate the implementation
2013-06-11 18:46:39 +09:00
Trustin Lee
7a5cf48b8d
Implement Promise/Future cancellation properly for outbound traffic
...
- Related issue: #1432
- Make sure the Promise of a write operation is not cancellable before writing out
2013-06-11 17:54:35 +09:00
Trustin Lee
41af9a1eb3
Implement cancellation properly for Promise/Future
...
- Related issue: #1432
- Add Future.isCancellable()
- Add Promise.setUncancellable() which is meant to be used for the party that runs the task uncancellable once started
- Implement Future.isCancelled() and Promise.cancel(boolean) properly
2013-06-11 17:46:21 +09:00
Norman Maurer
85afdda3ce
Correctly write MessageList which contains more then one message
2013-06-11 10:30:15 +02:00
Norman Maurer
16e12b45f8
Use Correct NoSuchElementException
2013-06-11 07:57:35 +02:00
Norman Maurer
e4a985f6ac
Let MessageList implement Iterable
2013-06-11 07:55:41 +02:00
Norman Maurer
f2f6d68d2e
Make sure writing empty ByteBuf will not cause a stavation.
...
This also fixes [#1436 ]
2013-06-10 20:54:17 +02:00
Trustin Lee
3ce9ab2e72
Replace the sun.nio.ch.SelectorImpl.selectedKeys with faster one
...
- Yield much less garbage
- Slight performance gain (1~2%)
2013-06-11 00:00:55 +09:00
Norman Maurer
d9806c8127
Add javadocs
2013-06-10 14:23:40 +02:00
Norman Maurer
68c737f0c0
Optimize the way messages are added from one MessageList to another one
2013-06-10 14:07:25 +02:00
Norman Maurer
92bd4d2fe0
Remove MessageList.remove(*) , MessageList.set(*) and MessageList.add(i,*)
2013-06-10 13:44:01 +02:00
Norman Maurer
e9c6406819
Remove the AIO transport as NIO is just faster
...
The AIO transport was added in the past as we hoped it would have better latency as the NIO transport. But in reality this was never the case.
So there is no reason to use the AIO transport at all. It just put more burden on us as we need to also support it and fix bugs.
Because of this we dedicided to remove it for now. It will stay in the master_with_aio_transport branch so we can pick it up later again if it is ever needed.
2013-06-10 11:30:11 +02:00
Trustin Lee
65e4161e63
Remove an unnecessary empty line
2013-06-10 18:20:24 +09:00
Trustin Lee
fa205defa1
Simplify the logic for updating OP_WRITE in the NIO transport
...
- Removed code duplication
2013-06-10 18:19:58 +09:00
Norman Maurer
3be25694d0
Add ChannelHandlerContext.isRemoved() to easily detect the removal of a ChannelHandler while in a method.
2013-06-10 11:16:05 +02:00