Перейти к содержимому

nx-gs-adapter-core

Runtime адаптера и точка входа для хоста. Подключает сервер к платформе, держит его зарегистрированным, находит остальные модули в classpath и запускает их.

app.l2nx:nx-gs-adapter-core

Java 8. Тег релиза core/vX.Y.Z. Версии — на maven-oss.

Всегда. Транзитивно приносит nx-gs-adapter-api, nx-gs-kafka и nx-gs-commons.

  • Обменивает ключ сервера на учётные данные платформы, повторяет попытки с backoff и раз в 60 секунд отправляет heartbeat со статусом каждого модуля.
  • На игровом сервере до старта любого модуля применяет changelog таблиц l2nx_* адаптера через SchemaMigrator из classpath (см. nx-gs-db-migrator-liquibase5).
  • После подключения находит модули (AdapterModule) через ServiceLoader и запускает их.
  • Публикует события, которые хост отправляет через адаптер, из одной ограниченной очереди.
  • Передаёт команды платформы обработчикам, которые зарегистрировал хост, и отправляет обратно их результаты.
  • Держит общий IO-пул для блокирующей работы модулей и обработчиков, чтобы она никогда не шла на игровом потоке.
  • Запускает app sessions, если хост предоставляет OfflineSessionHost. Держит представление платформы о них верным: раз в 60 секунд публикует id всех открытых сессий и переотправляет завершение сессии, пока платформа его не подтвердит.
  • Владеет файлом настроек приложения сервера l2nx-app.properties: читает его, проверяет целиком и перечитывает примерно раз в 5 секунд без перезапуска.
  • Публикует настройки сервера на платформу: настройки приложения и, если хост предоставляет GameSettingsProvider, конфигурацию движка. Обе уходят при подключении и затем раз в 5 минут, изменились они или нет; изменение файла настроек приложения уходит сразу.

Хост работает с адаптером через app.l2nx.gs.adapter.core.NxAdapter:

Метод Назначение
start() Запускает адаптер. Возвращается сразу и никогда не бросает исключение; повторные вызовы игнорируются.
state() Текущее состояние: INIT, REGISTERING, ACTIVE, DEGRADED, FAILED, REJECTED, DISABLED, CLOSED.
onStateChange(callback) Callback на каждую смену состояния.
hostExecutor(executor) Executor, который выполняет работу на игровой стороне для обработчиков команд. Задайте до start().
appRules() Актуальные настройки приложения как NxAppRules. Первый вызов загружает файл; доступен до start().
migrateSchema() Мигрирует таблицы l2nx_* заранее — для хоста, который читает их до start(). Выполняется один раз.
runtimeSync() Шлюз старта runtime-синхронизации. Хост вызывает на нём hostStarted(), иначе тиков не будет.
shutdown() Останавливает адаптер и доставляет события из очереди. Его же вызывает JVM shutdown hook адаптера.

Порядок загрузки — в быстром старте.

Ключи подключения, IO-пула, Kafka producer, событий и команд: конфигурация → nx-gs-adapter-core. У файла настроек приложения свои ключи: конфигурация → файл настроек приложения.