Nota

La librería ministreaming ha sido mejorada y extendida por la librería streaming"completa". Ministreaming está desechada y es incompatible con las aplicaciones actuales. La siguiente documentación es antigua. Observe también que esa libreria streaming extiende la ministreaming en el mismo paquete Java (net.i2p.client.streaming), así que la documentation de la API actual contiene ambas. Las obsoletas clases y métodos de ministreaming están claramente marcados como desechados en los Javadocs.

Librería ministreaming

La librería ministreaming es una capa sobre el corazón de I2CP que permite flujos (streams) fiables, ordenados y autentificados de mensajes para operar a través de una capa de mensajes no fiable, desordenada y no autentificada. Justo como la relación de TCP hacia IP, esta funcionalidad streaming tiene un completo conjunto de equilibrios y optimizaciones disponibles, pero en lugar de integrar esa funcionalidad en el código base de I2P, ha sido desgajado en su propia librería, tanto para mantener separadas las complejidades propias de TCP como para permitir implementaciones optimizadas alternativas.

La librería ministream fue escrita por mihi como parte de su aplicación I2PTunnel y después fue desgajada y publicada bajo la licencia BSD. Se la llama librería "mini"streaming porque hace algunas simplificaciones en la implementación, mientras una librería streaming más robusta podría seguir siendo optimizada para operar sobre I2P. Los dos principales problemas con la librería ministreaming son su uso del tradicional protocolo TCP de establecimiento en dos fases, y el actual tamaño fijo de ventana (TCP) de 1. El problema del establecimiento es menor para streams de vida larga, pero para los de corta, tales como las peticiones HTTP rápidas, el impacto puede ser significativo. Y en cuanto al tamaño de ventana (TCP), la librería ministreaming no mantiene identificador u orden alguno (o no incluye ACK o SACK de nivel aplicación alguno) junto con los mensajes enviados. así que, de media, debe esperar el doble de tiempo del que tarda en enviar un mensaje antes de enviar otro.

Incluso con esos problemas, la librería ministreaming se comporta bastante bien en muchas situaciones, y su API es tanto bastante simple como capaz de mantenerse invariante mientras se introducen diferentes implementaciones streaming. La librería se despliega en su propio `ministreaming.jar`. Los desarrolladores en Java a los que les gustaría usarla pueden acceder directamente a la API, mientras que los desarrolladores en otros lenguajes pueden usarla a través del soporte streaming de SAM.