149916d052
the implicit #fireChannelReadComplete() in EmbeddedChannel#writeInbound(). Motivation We use EmbeddedChannels to implement a ProxyChannel of some sorts that shovels messages between a source and a destination Channel. The latter are real network channels (such as Epoll) and they may or may not be managed in a ChannelPool. We could fuse both ends directly together but the EmbeddedChannel provides a nice disposable section of a ChannelPipeline that can be used to instrument the messages that are passing through the proxy portion. The ideal flow looks abount like this: source#channelRead() -> proxy#writeOutbound() -> destination#write() source#channelReadComplete() -> proxy#flushOutbound() -> destination#flush() destination#channelRead() -> proxy#writeInbound() -> source#write() destination#channelReadComplete() -> proxy#flushInbound() -> source#flush() The problem is that #writeOutbound() and #writeInbound() emit surplus #flush() and #fireChannelReadComplete() events which in turn yield to surplus #flush() calls on both ends of the pipeline. Modifications Introduce a new set of write methods that reain the same sematics as the #write() method and #flushOutbound() and #flushInbound(). Result It's possible to implement the above ideal flow. Fix for EmbeddedChannel#ensureOpen() and Unit Tests for it Some PR stuff. |
||
---|---|---|
all | ||
buffer | ||
codec | ||
codec-dns | ||
codec-haproxy | ||
codec-http | ||
codec-http2 | ||
codec-memcache | ||
codec-mqtt | ||
codec-redis | ||
codec-smtp | ||
codec-socks | ||
codec-stomp | ||
codec-xml | ||
common | ||
example | ||
handler | ||
handler-proxy | ||
license | ||
microbench | ||
resolver | ||
resolver-dns | ||
tarball | ||
testsuite | ||
testsuite-osgi | ||
transport | ||
transport-native-epoll | ||
transport-rxtx | ||
transport-sctp | ||
transport-udt | ||
.fbprefs | ||
.gitignore | ||
.travis.yml | ||
CONTRIBUTING.md | ||
LICENSE.txt | ||
NOTICE.txt | ||
pom.xml | ||
README.md | ||
run-example.sh |
Netty Project
Netty is an asynchronous event-driven network application framework for rapid development of maintainable high performance protocol servers & clients.
Links
How to build
For the detailed information about building and developing Netty, please visit the developer guide. This page only gives very basic information.
You require the following to build Netty:
- Latest stable Oracle JDK 7
- Latest stable Apache Maven
- If you are on Linux, you need additional development packages installed on your system, because you'll build the native transport.
Note that this is build-time requirement. JDK 5 (for 3.x) or 6 (for 4.0+) is enough to run your Netty-based application.
Branches to look
Development of all versions takes place in each branch whose name is identical to <majorVersion>.<minorVersion>
. For example, the development of 3.9 and 4.0 resides in the branch '3.9' and the branch '4.0' respectively.