Этот перевод был создан с помощью машинного обучения и может быть не на 100% точным. Просмотреть английскую версию

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

Как управляемые router приложения интегрируются с ClientAppManager и port mapper

Обзор

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


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

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

Управляемые клиенты реализуют либо интерфейс 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() с указанными аргументами. Router не поддерживает ссылку, поскольку все взаимодействия осуществляются через статический метод main(). Консоль не может предоставить пользователю точную информацию о состоянии.


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

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

console, i2ptunnel, Jetty, outproxy, update

Преобразователь портов

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

Was this page helpful?