Go to file
Norman Maurer ef76907422 Remove condition in ChannelHandlerAdapter.isSharable() by caching the result of the annotation lookup.
Motivation:
Remove the synchronization bottleneck and so speed up things

Modifications:
Introduce a ThreadLocal cache that holds mappings between classes of ChannelHandlerAdapater implementations and the result of checking if the @Sharable annotation is present.
This way we only will need to do the real check one time and server the other calls via the cache. A ThreadLocal and WeakHashMap combo is used to implement the cache
as this way we can minimize the conditions while still be sure we not leak class instances in containers.

Result:
Less conditions during adding ChannelHandlerAdapter to the ChannelPipeline
2014-03-12 12:31:22 +01:00
all [maven-release-plugin] prepare for next development iteration 2014-02-24 15:39:26 +01:00
buffer [maven-release-plugin] prepare for next development iteration 2014-02-24 15:39:26 +01:00
codec Remove condition in ChannelHandlerAdapter.isSharable() by caching the result of the annotation lookup. 2014-03-12 12:31:22 +01:00
codec-http added support for empty query parameters 2014-03-10 06:49:00 +01:00
codec-socks [maven-release-plugin] prepare for next development iteration 2014-02-24 15:39:26 +01:00
common Add capacity limit to Recycler / Optimize when assertion is off 2014-03-12 18:17:24 +09:00
example Ensure the HttpResponseEncoder is always placed before the HttpObjectAggregator. Part of [#2219] 2014-03-05 06:56:21 +01:00
handler Revert "ipfilter implementation for netty 4/5 [#2129]" 2014-03-12 06:26:50 +01:00
license [#1259] Add optimized queue for SCMP pattern and use it in NIO and native transport 2014-02-27 11:44:06 +01:00
microbench [maven-release-plugin] prepare for next development iteration 2014-02-24 15:39:26 +01:00
tarball [maven-release-plugin] prepare for next development iteration 2014-02-24 15:39:26 +01:00
testsuite Ensure the HttpResponseEncoder is always placed before the HttpObjectAggregator. Part of [#2219] 2014-03-05 06:56:21 +01:00
transport Remove condition in ChannelHandlerAdapter.isSharable() by caching the result of the annotation lookup. 2014-03-12 12:31:22 +01:00
transport-native-epoll [#2297] Correctly close all registered Channels on EpollEventLoop.closeAll() 2014-03-10 20:27:44 +01:00
transport-rxtx [maven-release-plugin] prepare for next development iteration 2014-02-24 15:39:26 +01:00
transport-sctp [maven-release-plugin] prepare for next development iteration 2014-02-24 15:39:26 +01:00
transport-udt [maven-release-plugin] prepare for next development iteration 2014-02-24 15:39:26 +01:00
.fbfilter.xml Update license headers 2012-06-04 13:31:44 -07:00
.fbprefs Updated Find Bugs configuration 2009-03-04 10:33:09 +00:00
.gitignore Format and partially describe Gitignore 2013-12-10 07:04:38 +01:00
.travis.yml Travis CI branch whitelisting 2013-03-11 09:55:43 +09:00
CONTRIBUTING.md Move the pull request guide to the developer guide 2014-03-12 13:18:14 +09:00
LICENSE.txt Relicensed to Apache License v2 2009-08-28 07:15:49 +00:00
NOTICE.txt [#1259] Add optimized queue for SCMP pattern and use it in NIO and native transport 2014-02-27 11:44:06 +01:00
pom.xml [maven-release-plugin] prepare for next development iteration 2014-02-24 15:39:26 +01:00
README.md Update README.md 2014-01-16 14:38:36 +09:00

Netty Project

Netty is an asynchronous event-driven network application framework for rapid development of maintainable high performance protocol servers & clients.

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:

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

The 'master' branch is where the development of the latest major version lives on. The development of all other major versions takes place in each branch whose name is identical to its major version number. For example, the development of 3.x and 4.x resides in the branch '3' and the branch '4' respectively.