Module: Application

Module: FirelandsApplication (src/application)

The application layer implements use cases and ports that infrastructure satisfies. It orchestrates domain objects without knowing MariaDB or Boost.Asio.

Built library (FirelandsApplication)

SourceRole
RealmListService.cppRealm rows + live population via IRealmLiveState
CommandService.cppStaff . commands and world console — see GM Commands
OnlineCharacterSessionRegistry.cppOnline name → session for console targeting
WorldService.cppRuntime world façade: maps, players, creatures, Lua host, collision port

Header-only services

ServiceRole
AuthServiceAccount lookup, SRP verification, session keys
SRPServiceSRP-6a verification helpers
CharacterServiceCharacter list and persistence
PlayerCreateInfoServiceCharacter creation templates
GmTicketServiceTicket queue, assignment, replies — GM Tickets
WebSessionServiceREST session tracking
SpellManager / CombatServiceSpell effects and combat orchestration

Application ports (application/ports/)

PortImplemented by
INetworkServerAsyncNetworkServer
IAuthSessionAuthSession
ICommandService / ICommandSessionCommandService / WorldSession
IGameScriptHostLuaGameScriptHost
IMapCollisionQueriesMapCollisionQueriesStub (vmap planned)
IRealmLiveStateRealmLiveRegistry + realm-link
IWorldRuntimeWorldRuntimeAccess

IMapNotifier lives in domain/ports/ (used by Player).

Dependency rule

Application depends on domain + shared only. No concrete MySQL or ASIO headers.