public sealed class TransferBoardThe slots a realm is holding for people who are on their way. Doc 27 § The overlap, t1.
Remarks
⚠ A pre-reservation is capacity that is spent before anybody has connected, and that is the point: without it, a map at 99 % could promise the same last slot to twenty players in flight and refuse nineteen of them at the door — after each had loaded the map. The reservation is what makes PlaceStatus.Placed a promise rather than a guess.
⚠ It therefore has to expire. A held slot whose client never arrives is capacity nobody can use, and a realm that leaked them would refuse arrivals while standing empty. Sweep is what a realm calls once per update.
Fields and properties (4)
public TimeSpan ReservationLifetimeHow long a slot is held for somebody who has not connected.
public TimeSpan DormantLifetimeHow long a dormant arrival is held before it is assumed abandoned.
public IReadOnlyCollection<Arrival> ArrivalsEverybody being held a slot for, in any state.
public int PendingHow many slots are spoken for — reserved and dormant, not yet live.
Methods (5)
public ReservationRefusal Reserve(TransferTicket ticket, long epoch, DateTimeOffset now, bool room, bool draining)Holds a slot for somebody the orchestrator is sending.
public bool Arrived(PlayerKey player, long epoch)The client connected and was admitted dormant. t3.
public bool Woke(PlayerKey player, long epoch)The lease was acquired and the payload applied. t5.
public bool Release(PlayerKey player)Gives the slot back.
public IReadOnlyList<PlayerKey> Sweep(DateTimeOffset now)Drops the slots nobody came for.
Used by (3)
- ArrivalTestsVixen.Live.Transfer.Tests
- RealmTransfersVixen.Live.Realm
- TransferFleetVixen.Live.Realm.Tests