Примечание

Библиотека минипотоков была улучшена и расширена "полной" стриминговой библиотекой. Ministreaming устарел и несовместим с современными приложениями. Следующая документация устарела. Также обратите внимание, что потоковая передача расширяет министриминг в том же пакете Java (net.i2p.client.streaming), поэтому текущая документация API содержит оба варианта. Устаревшие классы и методы ministreaming явно помечены как deprecated в Javadocs.

Библиотека минипотоков

Библиотека министриминга - это слой поверх ядра I2CP, который позволяет надежным, упорядоченным и аутентифицированным потокам сообщений работать через ненадежный, неупорядоченный и неаутентифицированный уровень сообщений. Подобно отношениям между TCP и IP, эта потоковая функциональность имеет целый ряд компромиссов и оптимизаций, но вместо того, чтобы встраивать эту функциональность в базовый код I2P, она была выделена в отдельную библиотеку, чтобы сохранить сложности, подобные TCP, отдельно и чтобы позволить альтернативные оптимизированные реализации.

Библиотека ministreaming была написана mihi как часть его приложения I2PTunnel, а затем была доработана и выпущена под лицензией BSD. Она называется "мини"-библиотекой потоковой передачи, потому что в ней сделаны некоторые упрощения в реализации, в то время как более мощная потоковая библиотека может быть дополнительно оптимизирована для работы через I2P. Две основные проблемы с библиотеки министриминга - это использование традиционного двухфазного протокола TCP и текущего фиксированного размер окна, равный 1. Проблема создания незначительна для долгоживущих потоков, но для коротких потоков, таких как быстрые HTTP запросы, влияние может быть значительным. Что касается размера окна, библиотека ministreaming не поддерживает никаких идентификаторов или упорядочивания в отправляемых сообщениях (не включает ACK или SACK на уровне приложения), поэтому она должна ждать в среднем вдвое дольше, чем требуется для отправки одного сообщения, прежде чем отправить другое.

Даже с этими проблемами, библиотека ministreaming работает достаточно хорошо во многих ситуациях, а ее API довольно прост и способен оставаться неизменным при появлении различных реализаций потоковой передачи. Библиотека развернута в собственном файле ministreaming.jar. Разработчики на Java, желающие использовать ее, могут получить доступ к API напрямую, а разработчики на других языках могут использовать через поддержку потоковой передачи в SAM.