nx-gs-adapter-core
Runtime адаптера и точка входа для хоста. Подключает сервер к платформе, держит его зарегистрированным, находит остальные модули в classpath и запускает их.
Координаты
Заголовок раздела «Координаты»app.l2nx:nx-gs-adapter-coreJava 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 минут, изменились они или нет; изменение файла настроек приложения уходит сразу.
API для хоста
Заголовок раздела «API для хоста»Хост работает с адаптером через 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. У файла настроек приложения свои ключи: конфигурация → файл настроек приложения.
