Norman Maurer
5a844d0bd6
[ #1812 ] Rework ByteToMessageDecoder.channelRead(..) method to allow for inlining
2013-10-24 07:15:40 +02:00
Norman Maurer
3de7a0bf76
Revert "[ #1812 ] Rework ByteToMessageDecoder.channelRead(..) method to allow for inlining"
...
This reverts commit b7262ab3da
.
2013-10-23 21:13:03 +02:00
Norman Maurer
b7262ab3da
[ #1812 ] Rework ByteToMessageDecoder.channelRead(..) method to allow for inlining
2013-10-23 19:54:24 +02:00
Norman Maurer
42cce12498
[ #1907 ] LengthFieldPrepender should better extend MessageToMessageEncoder for less memory copies
2013-10-11 06:38:18 +02:00
Norman Maurer
522dbf8543
[ #1906 ] Use a ByteBuf allocator from the ByteBufAllocator when encode Strings
2013-10-09 21:19:36 +02:00
Norman Maurer
f4edb2f689
[ #1893 ] Fix bug in JdkZlibDecoder which did not let it handle large data
2013-10-07 08:07:53 +02:00
Norman Maurer
2ffdd92b56
[ #1798 ] Correctly handle skipping of too big frames
2013-08-29 17:53:20 +02:00
Norman Maurer
5447fe1e59
Free up all buffers after the tests
2013-08-28 11:00:08 +02:00
Norman Maurer
cbf269e9b9
[ #1788 ] Correctly decode CRC32 and ISIZE when using JdkZlibDecoder
...
Because of incorrect decoding a CompressionException was thrown before
2013-08-28 09:51:04 +02:00
Derek Troy-West
71acd96361
Currently the system variable to chose which type of zlib decoder is being negated
2013-08-27 08:27:18 +02:00
Norman Maurer
09a748abdb
Bump up version to 4.1.0.Alpha1-SNAPSHOT
2013-08-26 15:18:18 +02:00
Norman Maurer
2e39b25cd4
[maven-release-plugin] prepare for next development iteration
2013-08-26 12:01:03 +02:00
Norman Maurer
b67659a866
[maven-release-plugin] prepare release netty-4.0.8.Final
2013-08-26 12:00:54 +02:00
Norman Maurer
65d24a7647
[ #1735 ] Disable usage of JdkZlibDecoder by default, will be enabled in 4.1.0.Final
2013-08-26 08:15:30 +02:00
Norman Maurer
39cabcd36c
[ #1481 ] Add a JdkZlibDecoder which has no dependencies
2013-08-14 07:41:28 +02:00
Norman Maurer
7d31943326
Remove some dead code
2013-08-11 21:37:43 +02:00
Norman Maurer
73755d1233
[ #1729 ] Let StringEncoder extend MessageToMessageEncoder and so safe a memory copy
2013-08-11 21:24:02 +02:00
Norman Maurer
9a88c50ffb
[ #1728 ] Recycle list after done with it in ReplayingDecoder/ByteToMessageDecoder channelInactive(..)
2013-08-11 21:04:55 +02:00
Norman Maurer
26ddf0849f
[ #1714 ] Make sure ByteArrayDecoder also works correctly with pooled buffers
2013-08-09 08:40:43 +02:00
Norman Maurer
1547876e97
Tiny optimizations
2013-08-09 08:24:24 +02:00
Norman Maurer
1d3560e389
[maven-release-plugin] prepare for next development iteration
2013-08-08 13:53:28 +02:00
Norman Maurer
8e97e6c461
[maven-release-plugin] prepare release netty-4.0.7.Final
2013-08-08 13:53:19 +02:00
Trustin Lee
87b17e195a
Grammar
2013-08-05 17:40:45 +09:00
Norman Maurer
4d064d85df
Rename class
2013-08-02 07:24:49 +02:00
Norman Maurer
ebee56ef49
More tests related to self removal from pipeline in ByteToMessageDecoder and ReplayingDecoder
2013-08-02 07:23:46 +02:00
Norman Maurer
487c28d93e
Add testcases to prove that remove ReplayingDecoder/ByteToMessageDecoder from within the decode(...) method works
2013-08-01 20:42:46 +02:00
Norman Maurer
3f2000fa3a
[maven-release-plugin] prepare for next development iteration
2013-08-01 10:59:55 +02:00
Norman Maurer
3f70d5caa4
[maven-release-plugin] prepare release netty-4.0.6.Final
2013-08-01 10:59:46 +02:00
Norman Maurer
a06295fe0a
Correctly fix problem in ByteToMessageDecoder and ReplayingDecoder which could let to have a released buffer passed to the decode methods.
...
This fixes #1664 and revert also the original commit which was meant to fix it 3b1881b523
. The problem with the original commit was that it could delay handlerRemove(..) calls and so mess up the order or forward bytes to late.
2013-08-01 09:54:07 +02:00
Norman Maurer
e3410680de
[maven-release-plugin] prepare for next development iteration
2013-07-31 20:08:14 +02:00
Norman Maurer
0e124583d6
[maven-release-plugin] prepare release netty-4.0.5.Final
2013-07-31 20:08:05 +02:00
Norman Maurer
6ce8571df3
[ #1668 ] Remove synchronized usage in JZlibEncoder and JdkZlibEncoder
2013-07-29 07:08:49 +02:00
Norman Maurer
6278d88d2f
[ #1656 ] Fix IndexOutOfBoundsException in MessageToMessageException
2013-07-26 11:46:26 +02:00
Norman Maurer
0bc7d3f5d1
[maven-release-plugin] prepare for next development iteration
2013-07-23 10:04:23 +02:00
Norman Maurer
ca00182797
[maven-release-plugin] prepare release netty-4.0.4.Final
2013-07-23 10:04:14 +02:00
Norman Maurer
eb3283c59c
[ #1613 ] Allow to specify if direct buffers are prefered in ByteToMessageCodec
2013-07-19 09:39:06 +02:00
Trustin Lee
7215c011ca
Fix resource leaks in the tests
2013-07-18 23:42:51 +09:00
Trustin Lee
fe59ab1b9c
Fix resource leak in LengthFieldBasedFrameDecoderTest
2013-07-18 20:55:02 +09:00
Trustin Lee
b130ee6a6c
[maven-release-plugin] prepare for next development iteration
2013-07-18 11:17:42 +09:00
Trustin Lee
10d395e829
[maven-release-plugin] prepare release netty-4.0.3.Final
2013-07-18 11:17:31 +09:00
Norman Maurer
fc7c950b08
[maven-release-plugin] prepare for next development iteration
2013-07-17 15:58:36 +02:00
Norman Maurer
bbbf72359e
[maven-release-plugin] prepare release netty-4.0.2.Final
2013-07-17 15:58:28 +02:00
Trustin Lee
57eb531eb8
[maven-release-plugin] prepare for next development iteration
2013-07-16 17:16:10 +09:00
Trustin Lee
76cefcc421
[maven-release-plugin] prepare release netty-4.0.1.Final
2013-07-16 17:15:54 +09:00
Norman Maurer
22be797054
Use Unpooled to allocate buffer in Base64
2013-07-16 07:24:45 +02:00
Norman Maurer
5297eba280
[maven-release-plugin] prepare for next development iteration
2013-07-15 15:48:15 +02:00
Norman Maurer
c5d8af446a
[maven-release-plugin] prepare release netty-4.0.0.Final
2013-07-15 15:48:05 +02:00
Trustin Lee
246a3ecdcb
[maven-release-plugin] prepare for next development iteration
2013-07-15 20:58:33 +09:00
Trustin Lee
e8fd209115
[maven-release-plugin] prepare release netty-4.0.0.Final
2013-07-15 20:58:21 +09:00
Norman Maurer
7522d530ac
Use the allocator of the src ByteBuf to allocate the new ByteBuf
2013-07-15 10:08:44 +02:00
Norman Maurer
2f7759a264
Remove unused package private classes
2013-07-14 23:50:27 +02:00
Norman Maurer
3140282ae3
Use the ByteBufAllocator when possible
2013-07-14 23:34:36 +02:00
Norman Maurer
ecb215c12f
Fix buffer leaks
2013-07-14 22:50:53 +02:00
Norman Maurer
a07abee55f
Add and correct javadocs
2013-07-13 19:42:02 +02:00
Norman Maurer
910c5fd594
Hide RecyclableArrayList from sub-classes
2013-07-13 16:57:44 +02:00
Norman Maurer
a8af577423
Add javadocs to methods that user may override and make the others final
2013-07-12 13:49:54 +02:00
Trustin Lee
765d470500
Remove UnreplayableOperationException
...
- Can't find a reason to keep it.
2013-07-12 20:40:39 +09:00
Norman Maurer
edb6786a5c
Make the cumulation field in ByteToMessageDecoder package private to hide it
2013-07-12 13:29:54 +02: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
da5c6add14
Rename CodecOutput to RecyclableArrayList and move it to internal package.
...
* Also reuse it in SslHandler
2013-07-10 07:50:26 +02:00
Norman Maurer
768152cf88
Correctly handle forward of remaining data on removal
2013-07-09 22:41:56 +02: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
65c2a6ed46
Make ByteBuf an abstract class rather than an interface
...
- 5% improvement in throughput (HelloWorldServer example)
- Made CompositeByteBuf a concrete class (renamed from DefaultCompositeByteBuf) because there's no multiple inheritance in Java
Fixes #1536
2013-07-08 14:59:52 +09:00
Trustin Lee
da5a5af520
Add Test case for truncated SSL packets
...
- Related issue: #1534
- Also made sure ByteToMessageDecoder does not wrap EncoderException.
2013-07-07 11:52:34 +09:00
Norman Maurer
7dda4b9ce4
[ #1532 ] Remove @deprecated ByteBufIndexFinder and all methods that take it as argument
2013-07-06 20:14:53 +02:00
Norman Maurer
ec5e793a2f
[maven-release-plugin] prepare for next development iteration
2013-07-02 11:41:18 +02:00
Norman Maurer
ca73eaef0d
[maven-release-plugin] prepare release netty-4.0.0.CR9
2013-07-02 11:41:09 +02:00
Norman Maurer
830c559405
[maven-release-plugin] rollback the release of netty-4.0.0.CR9
2013-07-02 11:34:29 +02:00
Norman Maurer
66a16b133c
[maven-release-plugin] prepare release netty-4.0.0.CR9
2013-07-02 10:45:12 +02:00
Trustin Lee
7e3a01cc51
[maven-release-plugin] prepare for next development iteration
2013-07-02 10:26:48 +09:00
Trustin Lee
149db34c19
[maven-release-plugin] prepare release netty-4.0.0.CR8
2013-07-02 10:26:32 +09:00
Trustin Lee
a6bdd7cda4
Fix compilation errors
2013-07-01 17:27:45 +09:00
Norman Maurer
4dab51b619
Remove un-used method parameter
2013-06-28 20:41:10 +02:00
Norman Maurer
e234abdbf7
Add javadocs
2013-06-28 20:28:29 +02:00
Trustin Lee
613547b0b9
[maven-release-plugin] prepare for next development iteration
2013-06-28 22:15:33 +09:00
Trustin Lee
a6abd2feb2
[maven-release-plugin] prepare release netty-4.0.0.CR7
2013-06-28 22:15:20 +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
Norman Maurer
094d01873b
Throw IllegalStateException if implementations of ByteToMessageDecoder and ByteToMessageCodec use @Sharable
2013-06-27 22:38:35 +02:00
Trustin Lee
ac39cad5ff
Split ByteBuf.forEachByte() into forEachByte() and forEachByteDesc()
...
- Related: #1378
- As suggested by @liqweed
2013-06-27 18:48:09 +09:00
Trustin Lee
b5bb36c087
Use (fromIndex, toIndex) instead of (index, length) for ByteBuf.forEachByte(...)
...
- Related: #1378
2013-06-27 17:30:19 +09:00
Trustin Lee
792edf631c
Deprecate ByteBufIndexFinder
...
- Prefer ByteBufProcessor
- Related: #1378
2013-06-27 14:26:58 +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
a6795d7780
[maven-release-plugin] prepare for next development iteration
2013-06-25 11:07:15 +09:00
Trustin Lee
2221446425
[maven-release-plugin] prepare release netty-4.0.0.CR6
2013-06-25 11:07:15 +09:00
Trustin Lee
96c5ab62e6
Fix IndexOutOfBoundsException raised by JZlibEncoder.encode()
...
- Fixes #1471
2013-06-25 11:07:13 +09:00
Norman Maurer
14f2e29af9
[ #1450 ] Fix examples in ReplayDecoder javadocs
2013-06-16 16:53:03 +02:00
Trustin Lee
a5871dfd86
[maven-release-plugin] prepare for next development iteration
2013-06-14 12:55:15 +09:00
Trustin Lee
f5377cc8d7
[maven-release-plugin] prepare release netty-4.0.0.CR5
2013-06-14 12:55:05 +09:00
Trustin Lee
30bfb989c1
Fix memory leak
2013-06-14 10:44:22 +09:00
Trustin Lee
e5ca6518ba
[maven-release-plugin] prepare for next development iteration
2013-06-13 17:02:32 +09:00
Trustin Lee
381063e09c
[maven-release-plugin] prepare release netty-4.0.0.CR4
2013-06-13 17:02:19 +09:00
Trustin Lee
fa277eda20
Fix reported leaks
2013-06-13 15:24:19 +09:00
Trustin Lee
427d9c4bf2
Fix test failures and reported leaks
2013-06-13 15:18:11 +09:00
Trustin Lee
01d9f10af6
Remove the volatile modifiers where they are unnecessary
2013-06-13 14:43:39 +09:00
Trustin Lee
6d1cd0d0cd
ReferenceCountException -> IllegalReferenceCountException
2013-06-13 14:00:15 +09:00
Trustin Lee
7eb0f6105d
Fix memory leaks
2013-06-13 13:32:47 +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
Norman Maurer
78c6925921
Clearify when you need to call retain()
2013-06-12 23:13:36 +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
3be25694d0
Add ChannelHandlerContext.isRemoved() to easily detect the removal of a ChannelHandler while in a method.
2013-06-10 11:16:05 +02:00
Trustin Lee
14158070bf
Revamp the core API to reduce memory footprint and consumption
...
The API changes made so far turned out to increase the memory footprint
and consumption while our intention was actually decreasing them.
Memory consumption issue:
When there are many connections which does not exchange data frequently,
the old Netty 4 API spent a lot more memory than 3 because it always
allocates per-handler buffer for each connection unless otherwise
explicitly stated by a user. In a usual real world load, a client
doesn't always send requests without pausing, so the idea of having a
buffer whose life cycle if bound to the life cycle of a connection
didn't work as expected.
Memory footprint issue:
The old Netty 4 API decreased overall memory footprint by a great deal
in many cases. It was mainly because the old Netty 4 API did not
allocate a new buffer and event object for each read. Instead, it
created a new buffer for each handler in a pipeline. This works pretty
well as long as the number of handlers in a pipeline is only a few.
However, for a highly modular application with many handlers which
handles connections which lasts for relatively short period, it actually
makes the memory footprint issue much worse.
Changes:
All in all, this is about retaining all the good changes we made in 4 so
far such as better thread model and going back to the way how we dealt
with message events in 3.
To fix the memory consumption/footprint issue mentioned above, we made a
hard decision to break the backward compatibility again with the
following changes:
- Remove MessageBuf
- Merge Buf into ByteBuf
- Merge ChannelInboundByte/MessageHandler and ChannelStateHandler into ChannelInboundHandler
- Similar changes were made to the adapter classes
- Merge ChannelOutboundByte/MessageHandler and ChannelOperationHandler into ChannelOutboundHandler
- Similar changes were made to the adapter classes
- Introduce MessageList which is similar to `MessageEvent` in Netty 3
- Replace inboundBufferUpdated(ctx) with messageReceived(ctx, MessageList)
- Replace flush(ctx, promise) with write(ctx, MessageList, promise)
- Remove ByteToByteEncoder/Decoder/Codec
- Replaced by MessageToByteEncoder<ByteBuf>, ByteToMessageDecoder<ByteBuf>, and ByteMessageCodec<ByteBuf>
- Merge EmbeddedByteChannel and EmbeddedMessageChannel into EmbeddedChannel
- Add SimpleChannelInboundHandler which is sometimes more useful than
ChannelInboundHandlerAdapter
- Bring back Channel.isWritable() from Netty 3
- Add ChannelInboundHandler.channelWritabilityChanges() event
- Add RecvByteBufAllocator configuration property
- Similar to ReceiveBufferSizePredictor in Netty 3
- Some existing configuration properties such as
DatagramChannelConfig.receivePacketSize is gone now.
- Remove suspend/resumeIntermediaryDeallocation() in ByteBuf
This change would have been impossible without @normanmaurer's help. He
fixed, ported, and improved many parts of the changes.
2013-06-10 16:10:39 +09:00
Luke Wood
c1cbe8bec3
Clarify SnappyFramedDecoder javadoc to make it as clear as possible regarding the default settings
2013-05-20 17:31:04 +01:00
Norman Maurer
81e3c1719a
[maven-release-plugin] prepare for next development iteration
2013-05-18 09:59:13 +02:00
Norman Maurer
99caefdf39
[maven-release-plugin] prepare release netty-4.0.0.CR3
2013-05-18 09:57:11 +02:00
Trustin Lee
e58af1bc94
Readability / Fix inception year
2013-05-17 17:59:13 +09:00
kxbmap
3a5aa12000
Add LengthFieldPrepender.lengthAdjustment parameter
2013-05-17 17:58:53 +09:00
Luke Wood
f841056752
Fix SnappyFramedDecoder checksum validation and add a pair of suitable unit tests
2013-05-16 14:10:54 +01:00
Trustin Lee
80f4c0b334
Merge SnappyChecksumUtil into Snappy and make calculateChecksum() public / Overall clean up
2013-05-09 15:23:56 +09:00
Norman Maurer
c43950a03f
[maven-release-plugin] prepare for next development iteration
2013-05-08 18:19:51 +02:00
Norman Maurer
ae76502040
[maven-release-plugin] prepare release netty-4.0.0.CR2
2013-05-08 18:19:38 +02:00
Norman Maurer
108c7d9b44
No need to pass the next BufType to the constructor
2013-05-06 07:46:26 +02:00
Norman Maurer
73c35aef4e
[ #1309 ] Make sure ReplayDecoder respect isSingleDecode()
...
* This could cause for example corrupt WebSocketFrame's if they was written from the server
to the client directly after it send the handshake response.
2013-04-25 08:32:07 +02:00
Trustin Lee
7884574c7b
Remove freeInboundBuffer() and freeOutboundBuffer() which has no value
...
- Fixes #1308
freeInboundBuffer() and freeOutboundBuffer() were introduced in the early days of the new API when we did not have reference counting mechanism in the buffer. A user did not want Netty to free the handler buffers had to override these methods.
However, now that we have reference counting mechanism built into the buffer, a user who wants to retain the buffers beyond handler's life cycle can simply return the buffer whose reference count is greater than 1 in newInbound/OutboundBuffer().
2013-04-25 09:15:55 +09:00
Trustin Lee
1b3d7f5325
Make sure handlerAdded() is called before forwarding the buffer content of the removed handler
...
- Added a test case that reproduces the problem in ReplayingDecoderTest
- Call newHandler.handlerAdded() *before* oldHandler.handlerRemoved() to ensure newHandlerAdded() is called before forwarding the buffer content of the old handler in replace0().
2013-04-24 19:25:43 +09:00
Trustin Lee
5dd35448a2
Add a failing test that will pass once #1306 is fixed
2013-04-24 18:47:36 +09:00
Trustin Lee
b5989e2449
Reduce exception instantiation overhead in SslHandler / Reduce unnecessary empty array creation
...
- Added EmptyArrays as an internal utility class
2013-04-24 09:32:53 +09:00
Trustin Lee
8e2e22c270
Change the thread model slightly for new/freeInbound/OutboundBuffer() for future improvement
...
- Related: #1283
- Make ReplayingDecoder work with the modified thread model
2013-04-23 13:06:27 +09:00
Norman Maurer
9c4bfa44d9
[ #1294 ] Make sure ByteBuf is released once written to channel
2013-04-22 11:04:56 +02:00
Norman Maurer
ca5554dfe7
[ #1236 ] Fix problem where adding a new ChannelHandler could block the eventloop
...
This change also introduce a few other changes which was needed:
* ChannelHandler.beforeAdd(...) and ChannelHandler.beforeRemove(...) were removed
* ChannelHandler.afterAdd(...) -> handlerAdded(...)
* ChannelHandler.afterRemoved(...) -> handlerRemoved(...)
* SslHandler.handshake() -> SslHandler.hanshakeFuture() as the handshake is triggered automatically after
the Channel becomes active
2013-04-19 07:00:50 +02:00
Trustin Lee
4a5dc32224
Fix a bug where LineBasedFrameDecoder does not handle too long lines correctly
...
- Related: #1287
2013-04-19 13:04:20 +09:00
Andrei Pozolotin
a3e760a003
fix #1234 - duplicate package-info.java errors in eclipse requires release of netty-build v 19 and netty-parent update.
2013-04-05 05:38:05 +09:00
Trustin Lee
6dfa455f9e
Fix compiler warnings
2013-04-04 16:31:41 +09:00
Trustin Lee
c03179c81c
Clean up try/catch blocks / Prefer 'throw' to 'fireExceptionCaught'
2013-04-04 15:00:07 +09:00
Trustin Lee
3b9994455a
Saner field order
2013-04-04 14:53:32 +09:00
Trustin Lee
03955428bc
Ensure BufUtil.release() is called even if writeBytes() fails in writeAndRelease()
2013-04-04 14:50:25 +09:00
Trustin Lee
015e60b00f
Clean up catch blocks
...
- No need to have nested try blocks because the catch block catches everything and rethrows it
- No need to do instanceof-checks
2013-04-04 14:48:30 +09:00
Trustin Lee
c25fd78ca0
No need to have nested try blocks
...
.. because the catch block catches everything and rethrows it
2013-04-04 14:44:52 +09:00
Trustin Lee
788b88b7af
Make sure to release the buffer when it's written to the next byte buffer
...
.. otherwise it will leak.
2013-04-04 14:37:54 +09:00
Trustin Lee
46540578fc
Optimize OutputMessageBuf.drainToNextInbound/Outbound()
...
- Return early when the buffer is empty
- Keep only the number of byte buffers
- Remove unnecessary null check in the loop (because we know buffer is not empty at certain point)
2013-04-04 14:32:48 +09:00
Trustin Lee
8a672c2800
Proper assertion instead of blindly clearing the OutputMessageBuf
2013-04-04 14:11:24 +09:00
Norman Maurer
7ee2adb587
Move drain logic to OutputMessageBuf and optimize it as far as possible
2013-04-03 18:52:57 +02:00
Norman Maurer
1675e61f5b
Share same ThreadLocal for all decoder/encoders to minimize memory usage
2013-04-03 18:19:35 +02:00
Norman Maurer
94ef7dc1b9
Optimize to minimize volatile reads to access next buffer in codec framework
2013-04-03 18:03:55 +02:00
Norman Maurer
9828267165
Fix performance regression which was caused by calling the fireInboundBufferUpdated() a way to often
...
* Also use a ThreadLocal for the decoder buffer to safe space as it is cheap
2013-04-03 17:07:52 +02:00
Norman Maurer
af4b71a00e
Remove special handling of Object[] in codec framework (a.k.a unfolding)
...
- Fixes #1229
- Primarily written by @normanmaurer and revised by @trustin
This commit removes the notion of unfolding from the codec framework
completely. Unfolding was introduced in Netty 3.x to work around the
shortcoming of the codec framework where encode() and decode() did not
allow generating multiple messages.
Such a shortcoming can be fixed by changing the signature of encode()
and decode() instead of introducing an obscure workaround like
unfolding. Therefore, we changed the signature of them in 4.0.
The change is simple, but backward-incompatible. encode() and decode()
do not return anything. Instead, the codec framework will pass a
MessageBuf<Object> so encode() and decode() can add the generated
messages into the MessageBuf.
2013-04-03 21:44:54 +09:00
Norman Maurer
2e3b8f13ea
Revert "Let ProtobufEncoder extend MessageToByteEncoder which makes more sense. Related to [ #1222 ]"
...
This reverts commit 6a9d055f57
.
2013-04-02 07:56:49 +02:00
Norman Maurer
6a9d055f57
Let ProtobufEncoder extend MessageToByteEncoder which makes more sense. Related to [ #1222 ]
2013-04-02 07:17:45 +02:00
Norman Maurer
a0fca93128
[ #1222 ] Correctly handle the case when a MessageToMessageEncoder encodes to ByteBuf and the next outbound buffer is of type ByteBuf
2013-04-02 07:17:10 +02:00
Prajwal Tuladhar
05850da863
enable checkstyle for test source directory and fix checkstyle errors
2013-03-30 13:18:57 +01:00
Norman Maurer
59012390f6
Fix version numbering
2013-03-25 08:01:11 +01:00
Norman Maurer
7d7b676eeb
[maven-release-plugin] prepare for next development iteration
2013-03-22 15:20:35 +01:00
Norman Maurer
60fc7dac4d
[maven-release-plugin] prepare release netty-4.0.0.CR1
2013-03-22 15:20:11 +01:00
Trustin Lee
8b722d29a7
Add constructor parameters that do not perform type parameter auto-detection for the languages without type parameters
...
- Fixes #1177
- Add TypeParameterMatcher.get(parameterType)
- Add alternative constructors
2013-03-21 16:11:47 +09:00
Trustin Lee
97f2fa7341
Allow a user specify the byte order of the length field for LengthFieldBasedFrameDecoder
...
- Fixes #1164
2013-03-18 13:58:48 +09:00
Trustin Lee
2a87950784
[maven-release-plugin] prepare for next development iteration
2013-03-16 18:41:36 +09:00
Trustin Lee
adfb29330b
[maven-release-plugin] prepare release netty-4.0.0.Beta3
2013-03-16 18:40:59 +09:00
Trustin Lee
e3d10ad493
Break the decode loop if decoder raises an exception to give a chance to close the connection to a user handler
...
- Fixes : #1161
2013-03-16 18:28:58 +09:00
Michael Nitschinger
b186342f52
Fixing 2 typos in codec documentation.
2013-03-16 17:18:21 +09:00
Trustin Lee
289d474a23
Make ByteArrayEncoder sharable
2013-03-14 17:44:32 +09:00
Trustin Lee
42e31a4445
Revert "[ #1131 ] Codecs must not cache next buffer during processing"
...
This reverts commit b1775a3223
.
2013-03-13 15:17:06 +09:00
Trustin Lee
c25513d5e1
Upgrade to protobuf 2.5 and take advantage of MessageLite.getParserFromType()
...
- also fall back to MessageBuilder if getParserFromType() is not available.
2013-03-12 16:25:35 +09:00
Trustin Lee
559b860ff6
Fix grammar
2013-03-12 15:23:09 +09:00
Trustin Lee
397830d238
Allow SingleOutboundMessageHandler.beginFlush() to reject the flush request by returning false / Replace PartialFlushException with IncompleteFlushException which is more correct.
2013-03-12 15:20:46 +09:00
Trustin Lee
c660002b4e
Add DecoderResult.UNFINISHED to represent the case where a decoder generated a message that was not decoded completely / Remove partial failure in DecoderResult which is not very useful but confusing
2013-03-12 13:04:53 +09:00
Norman Maurer
806e9b1f8c
Make sure we handle outbound messages of type ByteBuf special
2013-03-11 08:59:00 +09:00
Norman Maurer
b1775a3223
[ #1131 ] Codecs must not cache next buffer during processing
2013-03-08 15:38:17 +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
88df53ec1a
Fix infinite recursion when transferring data between different type of buffers / Add ByteBuf.hasMemoryAddress/memoryAddress()
...
- Fixes : #1109 and #1110
2013-03-06 18:22: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
42dad6d9d4
[ #1106 ] Also handle FileRegion in ByteToByteEncoder and SslHandler
2013-02-28 19:40:34 +01:00
Trustin Lee
49aa907bd0
[maven-release-plugin] prepare for next development iteration
2013-02-26 16:55:07 -08:00
Trustin Lee
5026c2f359
[maven-release-plugin] prepare release netty-4.0.0.Beta2
2013-02-26 16:54:53 -08:00
Trustin Lee
671f9d48d4
Use ConcurrentHashMapV8 wherever possible
...
- Fixes #1052
2013-02-26 15:54:51 -08:00
Luke Wood
e45db60b5e
[ #1069 ] Snappy decoding fixes
...
* Correct reading offset of 1-byte-offset copies
* Keep track of how much we've written so far in order to validate offsets
* Uncomment and reduce number of tests
2013-02-25 16:36:50 +00:00
Trustin Lee
58c72acd42
Add more failing tests to SnappyIntegrationTest
2013-02-22 10:06:24 -08:00
Luke Wood
f6d88ca5bf
Use Short.MAX_VALUE, as it accurately represents what we're trying to limit ourselves to
2013-02-22 15:23:47 +00:00
Luke Wood
0bfa9159e3
Do not attempt to compress trailing data that is less than the MIN_COMPRESSIBLE_LENGTH
2013-02-22 14:24:50 +00:00
Luke Wood
7a8e9d7993
Ensure that at least 4 bytes are remaining in input buffer when compiling our hash table in search of duplicates, and restrict encoded frame sizes to 32,767 bytes (2^15 - 1)
2013-02-22 14:24:50 +00:00
Trustin Lee
17641d52fb
Integrate @timboudreau's SnappyIntegrationTest improvements
2013-02-21 18:38:58 -08:00
Norman Maurer
c93f5afa99
[ #1012 ] Cleanup
2013-02-20 12:52:55 +01:00
Atsuhiko Yamanaka
8fdf788cbd
[ #1012 ] Replace forked jzlib with official jzlib and add a test.
2013-02-20 12:49:05 +01:00
Trustin Lee
d68a04a879
[maven-release-plugin] prepare for next development iteration
2013-02-14 12:56:24 -08:00
Trustin Lee
59e638f8f5
[maven-release-plugin] prepare release netty-4.0.0.Beta1
2013-02-14 12:56:15 -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
Norman Maurer
6983f704c0
Fix unreplayble error
2013-02-14 11:18:12 +01:00
Norman Maurer
5370573400
Change ReferenceCounted.retain* to return itself and so allow method chaining
2013-02-14 07:39:44 +01: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
Luke Wood
c1783cc8d3
More fixes to snappy: * Make Snappy.decode stateful instead of relying on the uncompressed length being equal to the compressed length * Correctly handle copies where offset < length * Take copies from the output buffer in decoding * Make the maximum encoded chunk size 32kB for compressed data
2013-02-11 15:05:27 +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
Trustin Lee
a2e5cd94be
Prettify APIviz / Tighten visibility / Move subclasses to top level / Remove unused UnknownSocksMessage
2013-02-11 19:42:23 +09:00
Trustin Lee
6c7bd6d174
Tighten visibility
2013-02-11 18:42:31 +09:00
Trustin Lee
d5105834d6
Hide SnappyChecksumUtil
2013-02-11 18:41:37 +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
46a249a26b
Add more failing tests for Snappy codec
2013-02-10 00:33:41 +09:00
Trustin Lee
bd87284829
Clean up SnappyIntegrationTest / Fix checksum encoding
2013-02-10 00:20:49 +09:00
Trustin Lee
8bd7ea2f93
Fix SnappyFramedEncoderTest & SnappyFramedEncoder
...
- chunkLength is 3 bytes
2013-02-10 00:03:47 +09:00
Trustin Lee
3268781607
Fix SnappyFramedDecoderTest
2013-02-09 23:57:14 +09:00
Trustin Lee
319b7fa69a
Fix SnappyFramedEncoder/Decoder / Fix Snappy preamble encoding / Add test for #1002
...
- The new test still fails due to a bug in Snappy.encode/decode()
2013-02-09 23:39:33 +09:00
Trustin Lee
36f8630512
Make SnappyFramedDecoder more robust against corrupt frame
2013-02-09 20:58:55 +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
44ea0a116f
Replace ChannelHandlerUtil.unfoldAndAdd() with MessageBuf.unfoldAndAdd() / Remove unused methods in ChannelHandlerUtil
2013-02-08 23:07:20 +09: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
01e65a01c7
Make ReplayingDecoder.newInboundBuffer/discardInboundReadByte() final for safety
2013-02-08 17:41:43 +09:00
Trustin Lee
82c46180c9
Tighten access modifier of encode/decode()
2013-02-08 17:37:16 +09:00
Trustin Lee
76eb40a4d2
Make ChannelOutboundMessageHandlerAdapter similar to ChannelInboundMessageHandlerAdapter
2013-02-08 17:07:01 +09:00
Trustin Lee
1640b1fea6
Automatically detect the message types in MessageToMessageCodec
2013-02-08 16:12:32 +09:00