public interface IFleetDirectoryThe two questions the gate asks the control plane, and the only two.
Remarks
⚠ A seam over the cluster for the reason IRealmGrains and IClusterApi are. Behind it is ClusterFleetDirectory and a silo; in a test it is a dictionary. That is what makes the gate's actual behaviour — version filtering, the character-belongs-to-this-account check, minting the ticket, the difference between Starting and Refused — assertable on every push instead of only against a running Orleans cluster.
The gate is allowed to hold a cluster client (ADR-017 excludes the client, not the gate) and the calls are all on the service plane, where a low-millisecond round trip is exactly what the budget is. ADR-016's rule is about a frame, and the gate does not have one.
Methods (2)
Task<PlaceResult> PlaceAsync(PlaceRequest request, CancellationToken cancellation)Asks the map where this player should go.
Task<long> NextLeaseEpochAsync(PlayerKey player, CancellationToken cancellation)The epoch a realm admitting this character will take.
Used by (3)
- ClusterFleetDirectoryVixen.Live.Gate
- FakeFleetVixen.Live.Gate.Tests
- GateServiceVixen.Live.Gate