Table of Contents

Class LoginServerSystem

Namespace
FishMMO.Server.Implementation.LoginServer
Assembly
FishMMO.Server.dll

Manages login server lifecycle, including database registration and heartbeat updates for the login service.

[CreateAssetMenu(fileName = "LoginServerSystem", menuName = "FishMMO/Server/LoginServer/Login Server System", order = 1)]
[RequiresDataContainer(typeof(LoginServerRuntimeData))]
[RequiresDataContainer(typeof(AsyncWorkerData))]
public class LoginServerSystem : ServerBehaviour, IServerBehaviour<INetworkManagerWrapper, ServerManager, NetworkConnection, IServerBehaviour>, IServerComponent<INetworkManagerWrapper, ServerManager, NetworkConnection, IServerBehaviour>, ILoginServerSystem, IServerBehaviour, IServerComponent
Inheritance
Object
ScriptableObject
LoginServerSystem
Implements
IServerBehaviour<INetworkManagerWrapper, ServerManager, NetworkConnection, IServerBehaviour>
IServerComponent<INetworkManagerWrapper, ServerManager, NetworkConnection, IServerBehaviour>
Inherited Members
ScriptableObject.SetDirty()
ScriptableObject.CreateInstance<T>()
Object.GetEntityId()
Object.GetInstanceID()
Object.GetHashCode()
Object.InstantiateAsync<T>(T)
Object.InstantiateAsync<T>(T, Transform)
Object.InstantiateAsync<T>(T, Vector3, Quaternion)
Object.InstantiateAsync<T>(T, Transform, Vector3, Quaternion)
Object.Instantiate(Object, Vector3, Quaternion)
Object.Instantiate(Object, Vector3, Quaternion, Transform)
Object.Instantiate(Object)
Object.Instantiate(Object, Scene)
Object.Instantiate<T>(T, InstantiateParameters)
Object.Instantiate<T>(T, Vector3, Quaternion, InstantiateParameters)
Object.Instantiate(Object, Transform)
Object.Instantiate<T>(T)
Object.Instantiate<T>(T, Vector3, Quaternion)
Object.Instantiate<T>(T, Vector3, Quaternion, Transform)
Object.Instantiate<T>(T, Transform)
Object.Destroy(Object)
Object.DestroyImmediate(Object)
Object.DontDestroyOnLoad(Object)
Object.DestroyObject(Object)
Object.FindObjectsOfType<T>()
Object.FindObjectsByType<T>(FindObjectsSortMode)
Object.FindObjectsByType<T>(FindObjectsInactive, FindObjectsSortMode)
Object.FindObjectOfType<T>()
Object.FindFirstObjectByType<T>()
Object.FindAnyObjectByType<T>()
Object.FindFirstObjectByType<T>(FindObjectsInactive)
Object.FindAnyObjectByType<T>(FindObjectsInactive)
Object.FindObjectsByType<T>()
Object.FindObjectsByType<T>(FindObjectsInactive)
Object.ToString()
Object.name
Object.hideFlags

Properties

PulseRate

Interval in seconds between database heartbeat pulses.

public float PulseRate { get; }

Property Value

float

Methods

InitializeOnce()

Synchronous entry point. This system registers itself in the database, so it must be initialized through InitializeOnceAsync(CancellationToken); reaching this method means the asynchronous startup chain was bypassed.

public override ServerComponentInitializationStatus InitializeOnce()

Returns

ServerComponentInitializationStatus

InitializeOnceAsync(CancellationToken)

Initializes the login server system, registers event handlers, and adds the server to the database — without blocking the Unity main thread.

public override Task<ServerComponentInitializationStatus> InitializeOnceAsync(CancellationToken cancellationToken)

Parameters

cancellationToken CancellationToken

Returns

Task<ServerComponentInitializationStatus>

Remarks

Awaits here deliberately capture Unity's SynchronizationContext (no ConfigureAwait(false)), so execution resumes on the main thread and the Unity and FishNet APIs used below stay legal.

OnDeinitialize()

Cleans up the login server system.

public override void OnDeinitialize()