Files
i2p.www/i2p2www/pages/site/docs/api/ministreaming.html

57 lines
3.2 KiB
HTML
Raw Normal View History

{% extends "global/layout.html" %}
{% block title %}{% trans %}Ministreaming Library{% endtrans %}{% endblock %}
2010-08-09 01:50:42 +00:00
{% block content %}
<h2>{% trans %}Note{% endtrans %}</h2>
<p>{% trans streaming=site_url('docs/api/streaming'), api='http://'+i2pconv('idk.i2p/javadoc-i2p')+'/net/i2p/client/streaming/package-summary.html' -%}
2010-08-09 01:50:42 +00:00
The ministreaming library has been enhanced and extended by the
"full" <a href="{{ streaming }}">streaming library</a>.
2010-08-09 01:50:42 +00:00
Ministreaming is deprecated and is incompatible with today's applications.
The following documentation is old.
Also note that streaming extends ministreaming in the same Java package (net.i2p.client.streaming),
so the current <a href="{{ api }}">API documentation</a> contains both.
2010-08-09 01:50:42 +00:00
Obsolete ministreaming classes and methods are clearly marked as deprecated in the Javadocs.
{%- endtrans %}</p>
2010-08-09 01:50:42 +00:00
<h2>{% trans %}Ministreaming Library{% endtrans %}</h2>
2010-08-09 01:50:42 +00:00
<p>{% trans i2cp=site_url('docs/protocol/i2cp') %}
The ministreaming library is a layer on top of the core
<a href="{{ i2cp }}">I2CP</a> that allows reliable, in order, and authenticated streams
2004-07-20 23:56:35 +00:00
of messages to operate across an unreliable, unordered, and unauthenticated
message layer. Just like the TCP to IP relationship, this streaming
functionality has a whole series of tradeoffs and optimizations available, but
rather than embed that functionality into the base I2P code, it has been factored
off into its own library both to keep the TCP-esque complexities separate and to
allow alternative optimized implementations.
{%- endtrans %}</p>
2004-07-20 23:56:35 +00:00
<p>{% trans i2ptunnel=site_url('docs/api/i2ptunnel'), minwww=site_url('misc/minwww') -%}
The ministreaming library was written by mihi as a part of his
<a href="{{ i2ptunnel }}">I2PTunnel</a> application and then factored out and released
2004-07-20 23:56:35 +00:00
under the BSD license. It is called the "mini"streaming library because it makes
some simplifications in the implementation, while a more robust streaming library
could be further optimized for operation over I2P. The two main issues with
the ministreaming library are its use of the traditional TCP two phase
establishment protocol and the current fixed window size of 1. The establishment
issue is minor for long lived streams, but for short ones, such as quick HTTP
requests, the impact can be <a href="{{ minwww }}">significant</a>. As for the window
2004-07-20 23:56:35 +00:00
size, the ministreaming library doesn't maintain any ID or ordering within the
messages sent (or include any application level ACK or SACK), so it must wait
on average twice the time it takes to send a message before sending another.
{%- endtrans %}</p>
2004-07-20 23:56:35 +00:00
<p>{% trans api='http://'+i2pconv('idk.i2p/javadoc-i2p')+'/net/i2p/client/streaming/package-summary.html',
samv3=site_url('docs/api/samv3') -%}
Even with those issues, the ministreaming library performs quite well in many
situations, and its <a href="{{ api }}">API</a>
2004-07-20 23:56:35 +00:00
is both quite simple and capable of remaining unchanged as different streaming
implementations are introduced. The library is deployed in its own
2010-08-09 01:50:42 +00:00
ministreaming.jar.
Developers in Java who would like to use it can
2004-07-20 23:56:35 +00:00
access the API directly, while developers in other languages can use it through
<a href="{{ samv3 }}">SAM</a>'s streaming support.
{%- endtrans %}</p>
{% endblock %}