forked from I2P_Developers/i2p.i2p
5e67008d264ae3ec7b33aa33c6ea01b96d2aa62a
Big savings is on client side (two less threads per connection) - Move client pool from static inI2PTunnelClientBase to TCG. - Use client pool for some server threads - Run some things inline that were formerly threads - Client-side I2PTunnelRunner thread used to do nothing but start 2 more threads; now it runs one inline (like we do for server-side HTTP) - Javadocs and cleanups Was originally intended to reduce load for high-traffic servers but most of the savings for now is on the client side. Ref: http://zzz.i2p/topics/1741 Todo: Figure out how to run the HTTP client-side gunzipper inline too Todo: More server-side improvements --- Client side: before: 4-5 threads, 1-2 pooled I2PTunnel Client Runner (BlockingRunner from client pool) starts I2PTunnelRunner or I2PTunnelHTTPClientRunner and exits starts StreamForwarder toI2P and waits starts StreamForwarder fromI2P and waits starts HTTPResponseOutputStream (HTTP gunzip only) (from client pool) now: 2-3 threads, 1-2 pooled I2PTunnel Client Runner (BlockingRunner from client pool) runs I2PTunnelRunner or I2PTunnelHTTPClientRunner inline starts StreamForwarder toI2P and waits runs StreamForwarder fromI2P inline starts HTTPResponseOutputStream (HTTP gunzip only) (from client pool) --- Server side: before: 1-4 threads, 0-1 pooled Server Handler Pool (Handler from server pool) execpt for standard server, blockingHandle() inline in acceptor starts I2PTunnelRunner or CompressedRequestor and exits starts StreamForwarder toI2P and waits (inline for HTTP) starts StreamForwarder fromI2P and waits (except not for HTTP GET) now: 1-4 threads, 0-2 pooled Server Handler Pool (Handler from server pool) execpt for standard server, blockingHandle() inline in acceptor starts I2PTunnelRunner or CompressedRequestor and exits (using client pool) starts StreamForwarder toI2P and waits (inline for HTTP) starts StreamForwarder fromI2P and waits (except not for HTTP GET)
Prerequisites to build from source: Java SDK (preferably Oracle/Sun or OpenJDK) 1.6.0 or higher Non-linux operating systems and JVMs: See https://trac.i2p2.de/wiki/java Apache Ant 1.7.0 or higher The xgettext, msgfmt, and msgmerge tools installed from the GNU gettext package http://www.gnu.org/software/gettext/ To build: On x86 systems do: ant pkg On non-x86, use one of the following instead: ant installer-linux ant installer-freebsd ant installer-osx Run 'ant' with no arguments to see other build options. See INSTALL.txt or https://geti2p.net/download for installation instructions. Documentation: https://geti2p.net/how API: run 'ant javadoc' then start at build/javadoc/index.html Latest release: https://geti2p.net/download To get development branch from source control: https://geti2p.net/newdevelopers FAQ: https://geti2p.net/faq Need help? IRC irc.freenode.net #i2p http://forum.i2p/ Licenses: See LICENSE.txt
Description
Languages
Java
86.8%
CSS
4.8%
HTML
4.1%
Shell
1.1%
JavaScript
1.1%
Other
1.9%