Эта страница была обновлена Февраль 2014 и содержит сведения для версии маршрутизатора 0.9.11.

Обзор

Клиенты могут запускаться непосредственно маршрутизатором, если они перечислены в файле clients.config. Эти клиенты могут быть "управляемыми" или "неуправляемыми". Это обрабатывается менеджером ClientAppManager. Кроме того, управляемые или неуправляемые клиенты могут зарегистрироваться в ClientAppManager, чтобы другие клиенты могли получить ссылку на них. Существует также простая функция Port Mapper, позволяющая клиентам регистрировать внутренний порт, который могут искать другие клиенты.

Управляемые клиенты

Начиная с версии 0.9.4, маршрутизатор поддерживает управляемые клиенты. Управляемые клиенты конкретизируются и запускаются ClientAppManager(ом). ClientAppManager поддерживает ссылку на клиента и получает обновления о состоянии клиента. Управляемые клиенты предпочтительнее, так как гораздо проще реализовать отслеживание состояния, запуск и остановку клиента. Также гораздо проще избежать статических ссылок в коде клиента, которые могут привести к чрезмерному использованию памяти после остановки клиента. Управляемые клиенты могут запускаться и останавливаться пользователем в консоли маршрутизатора и прекращаются при выключении маршрутизатора.

Управляемые клиенты реализуют либо интерфейс net.i2p.app.ClientApp, либо net.i2p.router.app.RouterApp. Клиенты, реализующие интерфейс ClientApp, должны предоставить следующий конструктор:

    public MyClientApp(I2PAppContext context, ClientAppManager listener, String[] args)

Клиенты, реализующие интерфейс RouterApp, должны предоставить следующий конструктор:

    public MyClientApp(RouterContext context, ClientAppManager listener, String[] args)

Предоставляемые аргументы указываются в файле clients.config.

Неуправляемые клиенты

Если основной класс, указанный в файле clients.config, не реализует управляемый интерфейс, он будет запущен с помощью main() с указанными аргументами и остановлен с помощью main() с указанными аргументами. Маршрутизатор не поддерживает ссылки, так как все взаимодействия осуществляются через статический метод main(). Консоль не может предоставить пользователю точную информацию о состоянии.

Зарегистрированные клиенты

Клиенты, как управляемые, так и неуправляемые, могут зарегистрироваться в ClientAppManager, чтобы другие клиенты могли получить ссылку на них. Регистрация осуществляется по имени. Известными зарегистрированными клиентами являются:

    console, i2ptunnel, Jetty, outproxy, update

Картограф портов

Маршрутизатор также предоставляет клиентам простой механизм для поиска внутренней службы сокетов, например, HTTP-прокси. Это обеспечивает Картограф портов. Регистрация осуществляется по имени. Клиенты, которые регистрируются, обычно предоставляют внутренний эмулированный сокет на этом порту.