Table of Contents

Interface ILoginServerService

Namespace
FishMMO.Database.Npgsql.Services.Interfaces
Assembly
FishMMO-DB.dll

Service interface for login server registration and management operations. Provides async methods for server registration, heartbeat updates, and retrieval. Returns DatabaseResult for consistent, safe error handling with sanitized messages.

public interface ILoginServerService : IFetchByKeyAction<long, LoginServerData>
Inherited Members

Remarks

DatabaseResult provides detailed error information to help distinguish between:

  • Validation failures (invalid parameters)
  • Not found scenarios (server doesn't exist)
  • Database errors (connection issues, constraint violations, transient failures)
  • Unexpected runtime errors

Methods

DeleteAsync(long, CancellationToken)

Deletes a login server registration.

Task<DatabaseResult> DeleteAsync(long serverId, CancellationToken cancellationToken = default)

Parameters

serverId long

Server ID to delete. Must be greater than 0.

cancellationToken CancellationToken

Cancellation token.

Returns

Task<DatabaseResult>

DatabaseResult indicating success or failure with error details.

Remarks

Success: Server registration removed from database. If the server does not exist, this operation still succeeds. Failure cases:

  • VALIDATION_ERROR: Invalid server ID (less than or equal to 0)
  • DATABASE_ERROR: Unexpected database error

PersistAsync(string, string, ushort, CancellationToken)

Adds or updates a login server registration.

Task<DatabaseResult<LoginServerData>> PersistAsync(string name, string address, ushort port, CancellationToken cancellationToken = default)

Parameters

name string

Server name (unique identifier). Must not be null or whitespace.

address string

Server address. Must not be null or whitespace.

port ushort

Server port.

cancellationToken CancellationToken

Cancellation token.

Returns

Task<DatabaseResult<LoginServerData>>

DatabaseResult containing LoginServerData with server ID and details on success.

Remarks

Success: Returns complete server data including generated ID. Failure cases:

  • VALIDATION_ERROR: Invalid name or address (null/whitespace)
  • UNIQUE_VIOLATION: A unique constraint was violated (non-transient). Note: normal concurrent registration by name is handled via UPSERT and should not produce this.
  • DATABASE_ERROR: Unexpected database error

PulseAsync(long, CancellationToken)

Updates the last pulse timestamp for a login server (heartbeat).

Task<DatabaseResult> PulseAsync(long serverId, CancellationToken cancellationToken = default)

Parameters

serverId long

Server ID. Must be greater than 0.

cancellationToken CancellationToken

Cancellation token.

Returns

Task<DatabaseResult>

DatabaseResult indicating success or failure with error details.

Remarks

Success: Pulse timestamp updated. Failure cases:

  • VALIDATION_ERROR: Invalid server ID (less than or equal to 0)
  • ENTITY_NOT_FOUND: Server does not exist
  • DATABASE_ERROR: Unexpected database error