Class GroupFinderQueueEntity
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
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
GroupID
Pre-made group this character queued with, or 0 when they queued alone.
public long GroupID { get; set; }
Property Value
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
InstanceID
Instance row the character was matched into, or 0 while still waiting.
public long InstanceID { get; set; }
Property Value
LastPulse
Last heartbeat from the scene server hosting the character (UTC).
public DateTime LastPulse { get; set; }
Property Value
PartyID
Party the character was matched into, or 0 while still waiting.
public long PartyID { get; set; }
Property Value
SceneName
Dungeon or arena scene the character wants to play.
public string SceneName { get; set; }
Property Value
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
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
TimeCreated
When the character joined the queue (UTC). Decides who has waited longest.
public DateTime TimeCreated { get; set; }
Property Value
TimeMatched
When the row was matched (UTC), or null while waiting.
public DateTime? TimeMatched { get; set; }
Property Value
WorldServerID
World server the character belongs to. Groups never form across world servers.
public long WorldServerID { get; set; }