Go to file
zzz 5e67008d26 I2PTunnel: Reduce i2ptunnel threads, more thread pooling.
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)
2014-12-05 15:12:51 +00:00
2014-08-10 19:32:11 +00:00
2014-10-30 20:09:13 +00:00
2013-05-24 13:46:17 +00:00
2014-12-02 13:42:58 +00:00
2014-04-01 21:22:41 +00:00
2014-04-01 21:22:41 +00:00
2014-11-22 13:17:39 +00:00
2014-10-13 16:46:43 +00:00
2014-02-10 14:22:43 +00:00

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
The I2P anonymous network, Java Implementation
Readme 228 MiB
Languages
Java 86.8%
CSS 4.8%
HTML 4.1%
Shell 1.1%
JavaScript 1.1%
Other 1.9%