Files
Rendezvous/src/FinalFactory.Rendezvous.Contracts/Http/JoinContracts.cs
T
KyuubiYoru 69c8b2d2bc
quality-gate / quality (push) Successful in 51s
feat: freeze v1 transport contracts (#4)
Closes #4
2026-07-16 04:52:38 +02:00

93 lines
2.2 KiB
C#

using System.Text.Json.Serialization;
namespace FinalFactory.Rendezvous.Contracts;
public sealed class CreateJoinAttemptRequest
{
[JsonRequired]
public int ContractVersion { get; set; } = ContractLimits.ContractVersion;
[JsonRequired]
public string IdempotencyKey { get; set; } = string.Empty;
[JsonRequired]
public GameId GameId { get; set; }
[JsonRequired]
public EnvironmentId EnvironmentId { get; set; }
[JsonRequired]
public SessionListingId ListingId { get; set; }
[JsonRequired]
public uint ProtocolVersion { get; set; }
}
public sealed class CreateJoinAttemptResponse
{
[JsonRequired]
public int ContractVersion { get; set; } = ContractLimits.ContractVersion;
[JsonRequired]
public JoinAttemptId AttemptId { get; set; }
[JsonRequired]
public MediationHandle MediationHandle { get; set; }
[JsonRequired]
public string ClientPunchCapability { get; set; } = string.Empty;
[JsonRequired]
public DateTimeOffset ExpiresAt { get; set; }
public NetworkEndpoint? DedicatedFallback { get; set; }
}
public sealed class HostJoinAttempt
{
[JsonRequired]
public JoinAttemptId AttemptId { get; set; }
[JsonRequired]
public MediationHandle MediationHandle { get; set; }
[JsonRequired]
public string HostPunchCapability { get; set; } = string.Empty;
[JsonRequired]
public DateTimeOffset ExpiresAt { get; set; }
}
public sealed class BrowseHostJoinAttemptsResponse
{
[JsonRequired]
public int ContractVersion { get; set; } = ContractLimits.ContractVersion;
[JsonRequired]
public List<HostJoinAttempt> Items { get; set; } = [];
public string? NextCursor { get; set; }
}
public sealed class ReportConnectionOutcomeRequest
{
[JsonRequired]
public int ContractVersion { get; set; } = ContractLimits.ContractVersion;
[JsonRequired]
public ConnectionOutcomeKind Outcome { get; set; }
[JsonRequired]
public int ElapsedMilliseconds { get; set; }
public string? DiagnosticCode { get; set; }
}
public sealed class ReportConnectionOutcomeResponse
{
[JsonRequired]
public int ContractVersion { get; set; } = ContractLimits.ContractVersion;
[JsonRequired]
public bool Accepted { get; set; }
}