Table of Contents

Class GroupFinderQueueEntity

Namespace
FishMMO.Database.Npgsql.Entities
Assembly
FishMMO-DB.dll

One character waiting in the dungeon group finder, or matched by it and about to be moved.

public class GroupFinderQueueEntity
Inheritance
GroupFinderQueueEntity
Inherited Members

Remarks

The queue lives in the database rather than in any one process because the players in it are spread across scene servers. Whoever presses Find Group first may be standing on a different scene server from the four people who complete their group, and the only thing all of those servers share is this table.

A row is created when a character asks to find a group and deleted when they leave the queue, log out, or are moved into the run the finder built for them. A character has at most one row — the queue is not a wishlist — which is what character_id's unique index enforces.

LastPulse is a heartbeat written by the scene server the character is connected to. A row whose heartbeat has gone quiet belongs to a server that died or a character that vanished without the disconnect path running, and it is excluded from matching and eventually reaped rather than being handed a party it cannot join.

Properties

CharacterID

The waiting character. Unique: a character queues for one thing at a time.

public long CharacterID { get; set; }

Property Value

long

Difficulty

Index into the template's own list: a dungeon's difficulty, or an arena's format (team size).

public int Difficulty { get; set; }

Property Value

int

GroupID

Pre-made group this character queued with, or 0 when they queued alone.

public long GroupID { get; set; }

Property Value

long

Remarks

Arenas allow a party to queue together; the composer keeps rows sharing a group id on one team and takes all of them or none. Dungeons never set it — the finder fills a party's dungeon through the open run instead.

ID

Primary key.

public long ID { get; set; }

Property Value

long

InstanceID

Instance row the character was matched into, or 0 while still waiting.

public long InstanceID { get; set; }

Property Value

long

LastPulse

Last heartbeat from the scene server hosting the character (UTC).

public DateTime LastPulse { get; set; }

Property Value

DateTime

PartyID

Party the character was matched into, or 0 while still waiting.

public long PartyID { get; set; }

Property Value

long

SceneName

Dungeon or arena scene the character wants to play.

public string SceneName { get; set; }

Property Value

string

SceneType

What kind of instance is being waited for: a dungeon (Group) or an arena (PvP), as the shared SceneType value.

public int SceneType { get; set; }

Property Value

int

Remarks

Separates the two queues so a count or a match for one never reads the other's rows, and lets one table, one pump and one leash serve both.

Status

Where the row is in its life. See GroupFinderQueueStatus.

public int Status { get; set; }

Property Value

int

TimeCreated

When the character joined the queue (UTC). Decides who has waited longest.

public DateTime TimeCreated { get; set; }

Property Value

DateTime

TimeMatched

When the row was matched (UTC), or null while waiting.

public DateTime? TimeMatched { get; set; }

Property Value

DateTime?

WorldServerID

World server the character belongs to. Groups never form across world servers.

public long WorldServerID { get; set; }

Property Value

long