Table of Contents

Namespace FishMMO.Server.Core

Namespaces

FishMMO.Server.Core.Authentication
FishMMO.Server.Core.Collections
FishMMO.Server.Core.LoginServer
FishMMO.Server.Core.Smtp
FishMMO.Server.Core.World

Classes

BulkWriteReporting

Turns a bulk write's outcome into the log line it deserves, and answers the only two questions a caller actually has about one.

CoreServer

Core, engine-agnostic server logic: configuration and lifecycle event dispatching.

FileServerConfiguration

Handles all logic related to loading, saving, and accessing the application's configuration settings from files.

IngressGuard

Reusable per-connection, per-operation debounce and in-flight guard. Eliminates duplicated ingress-guard boilerplate across server systems. Thread-safe: backed by ConcurrentDictionary for cross-thread access.

RequiresDataContainerAttribute

Declares that a ServerBehaviour requires a specific RuntimeDataContainer type. The container will be automatically instantiated and registered before the behaviour is initialized. Multiple systems can declare the same container type, and only one instance will be created.

ServerEvents

A concrete implementation of IServerEvents. Provides Action delegates for server lifecycle events. The Action properties use get; set; rather than the event keyword to allow invocation from external types. Callers MUST use +=/-= — direct assignment (=) replaces all existing subscribers and is reserved for initialization only.

Interfaces

IAsyncWorkerData

Runtime data container interface for a centralized async work queue. Provides bounded, backpressure-aware enqueueing of async work items, executed concurrently under a configurable concurrency limit.

Systems use this instead of fire-and-forget _ = SomeAsync(...) to bound how much work is in flight at once and to get ordering guarantees for entity-keyed work.

ICoreServer

Represents the core, engine-agnostic server logic. Defines the contract for initializing and accessing core server data.

IKickRequestSystem

Engine-agnostic public API for the kick request processing system on a world server. Provides configuration surface and allows other systems to query or modify runtime pump parameters without referencing the implementation.

IKickRequestSystemMainThreadQueueData

Main-thread queue data interface for KickRequestSystem. Separate interface ensures the DataContainerRegistry maps this independently from other systems' main-thread queues.

IKickRequestSystemQueueData

Runtime data container for kick request processing state. Tracks database polling position for kick request processing.

IMainThreadQueueData

Runtime data container interface for a thread-safe main-thread action queue. Systems use this to marshal network operations (Broadcast, Kick, Disconnect) from async worker threads back to the main Unity thread.

IPeriodicUpdateSystem

Provides periodic callback registration and dispatch functionality. Allows components to register callbacks that execute at specified intervals.

IRuntimeDataContainer

Non-generic marker interface for runtime data containers. Use this when declaring engine-agnostic data container interfaces so the implementation registry can discover and register containers by their interface types. Extends IServerComponent to participate in the unified component registry system.

IRuntimeDataContainerFactory

Engine-agnostic factory for creating RuntimeDataContainer instances. Enables testability and decouples container creation from discovery.

IRuntimeDataContainerRegistry<TNetworkManager, TConnection, TDataContainer>

Engine-agnostic interface for the runtime data container registry. Defines the contract for registering, retrieving, and managing runtime data containers. Extends IServerComponentRegistry for unified component management.

IRuntimeDataContainer<TNetworkManager, TServerManager, TConnection, TDataContainer>

Generic interface for runtime data containers that store mutable server state. Data containers are managed by Server.cs and provide type-safe access to runtime data without coupling data storage to behaviour logic.

IServer

Public interface for the server composition root. This surface represents the instance-level public API of a server MonoBehaviour implementation.

IServerAddressProvider

Interface for a service that provides server address information. Removes the responsibility from the Server class itself.

IServerBehaviour

Non-generic marker interface for server behaviours. Use this when declaring engine-agnostic server behaviour interfaces so the implementation registry can discover and register behaviours by their interface types. Extends IServerComponent to participate in the unified component registry system.

IServerBehaviourRegistry<TNetworkManager, TConnection, TBehaviour>

Engine-agnostic interface for the server behaviour registry. Defines the contract for registering, retrieving, and managing server-side behaviours. Extends IServerComponentRegistry for unified component management.

IServerBehaviour<TNetworkManager, TServerManager, TConnection, TServerBehaviour>

Public interface representing the public API surface of server-side behaviours. Typical implementations are ScriptableObject-derived types that register with the server and perform server-side logic (for example FishMMO.Server.Implementation.ServerBehaviour). Extends IServerComponent to participate in the unified component initialization lifecycle.

IServerComponent

Base marker interface for all server components (behaviours, data containers, etc.). Use this when declaring engine-agnostic component interfaces so the implementation registry can discover and register components by their interface types.

IServerComponentRegistry<TNetworkManager, TConnection, TServerComponent>

Generic interface for server component registries. Defines the contract for registering, retrieving, and managing server components (behaviours, data containers, etc.).

IServerComponent<TNetworkManager, TServerManager, TConnection, TServerComponent>

Generic interface for server components that require initialization and lifecycle management. This is the base interface for all server components including behaviours and data containers.

IServerConfiguration

Interface for a service that manages server configuration. Provides methods to retrieve and save configuration values for different server types.

IServerEvents

Interface for a service that raises server lifecycle events. Provides event delegates for subscription. The Action properties use get; set; rather than the event keyword to allow invocation from external types (e.g., CoreServer). Callers MUST use +=/-= for subscription management — direct assignment (=) will replace all existing subscribers and should never be used outside of the implementing ServerEvents class initialization.

IServer<TNetworkManager, TConnection, TServerBehaviour>

Public interface for the server composition root. This surface represents the instance-level public API of a server MonoBehaviour implementation.

Enums

ConnectionState

Connection states the server can be in.

ServerComponentInitializationStatus

Enumeration representing the initialization status of server components (behaviours, data containers, etc.). Generic status enum used across all server component types.

ServerType

Represents the type of server being launched. Provides a type-safe way to handle different server behaviors.