Vixen
02b45cc4
csharp
public sealed class TransferBoard

The slots a realm is holding for people who are on their way. Doc 27 § The overlap, t1.

Read the guide page for this →

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 ReservationLifetime

    How long a slot is held for somebody who has not connected.

  • public TimeSpan DormantLifetime

    How long a dormant arrival is held before it is assumed abandoned.

  • public IReadOnlyCollection<Arrival> Arrivals

    Everybody being held a slot for, in any state.

  • public int Pending

    How 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