Table of Contents

Class KickRequestSystem

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

System for processing kick requests from the database and disconnecting accounts as needed. Periodically polls the database for new kick requests and processes them asynchronously. Kick/Disconnect calls are marshalled back to the main thread via a RuntimeDataContainer queue.

[CreateAssetMenu(fileName = "KickRequestSystem", menuName = "FishMMO/Server/WorldServer/Kick Request System", order = 1)]
[RequiresDataContainer(typeof(KickRequestSystemQueueData))]
[RequiresDataContainer(typeof(KickRequestSystemMainThreadQueueData))]
[RequiresDataContainer(typeof(AsyncWorkerData))]
public class KickRequestSystem : ServerBehaviour, IServerBehaviour<INetworkManagerWrapper, ServerManager, NetworkConnection, IServerBehaviour>, IServerComponent<INetworkManagerWrapper, ServerManager, NetworkConnection, IServerBehaviour>, IKickRequestSystem, IServerBehaviour, IServerComponent
Inheritance
Object
ScriptableObject
KickRequestSystem
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

UpdateFetchCount

Gets or sets the maximum number of kick requests to fetch per poll.

public int UpdateFetchCount { get; set; }

Property Value

int

UpdatePumpRate

Gets or sets the server kick request update pump rate limit in seconds.

public float UpdatePumpRate { get; set; }

Property Value

float

Methods

InitializeOnce()

Called once to initialize the system. Subscribes to server connection state events.

public override ServerComponentInitializationStatus InitializeOnce()

Returns

ServerComponentInitializationStatus

OnDeinitialize()

Called when the system is being destroyed. Unsubscribes from server connection state events. Drains remaining main-thread responses so clients get their final messages.

public override void OnDeinitialize()

OnRemoteConnectionStopped(NetworkConnection)

Handles remote connection disconnects. Deletes kick requests for accounts that disconnect. Database operation is performed asynchronously to avoid blocking the callback thread.

protected override void OnRemoteConnectionStopped(NetworkConnection conn)

Parameters

conn NetworkConnection

The network connection.

OnUpdate(float)

Drains the main-thread response queue each frame. All network operations from async workers are marshalled through this queue to ensure they execute on the main Unity thread.

protected override void OnUpdate(float deltaTime)

Parameters

deltaTime float

Time elapsed since last frame.