feat(client): add rendezvous traversal coordinators (#12)
quality-gate / quality (push) Successful in 56s
quality-gate / quality (push) Successful in 56s
This commit is contained in:
@@ -12,8 +12,23 @@ TYPE FinalFactory.Rendezvous.Client.ConnectionTicketValidator
|
||||
METHOD System.Boolean Revoke(FinalFactory.Rendezvous.Contracts.JoinAttemptId attemptId)
|
||||
METHOD System.String ToString()
|
||||
METHOD System.Boolean TryAuthorize(FinalFactory.Rendezvous.Contracts.JoinAttemptId attemptId, System.String connectionTicket, System.DateTimeOffset expiresAt)
|
||||
TYPE FinalFactory.Rendezvous.Client.DirectConnectionRequest
|
||||
CTOR ()
|
||||
PROP FinalFactory.Rendezvous.Contracts.JoinAttemptId AttemptId {get;set;}
|
||||
PROP System.String ConnectionTicket {get;set;}
|
||||
METHOD System.String ToString()
|
||||
TYPE FinalFactory.Rendezvous.Client.DirectConnectionRequestCodec
|
||||
FIELD System.Int32 EncodedLength=63
|
||||
METHOD System.Byte[] Encode(FinalFactory.Rendezvous.Contracts.JoinAttemptId attemptId, System.String connectionTicket)
|
||||
METHOD System.Boolean IsRendezvousRequest(System.ReadOnlySpan<System.Byte> encoded)
|
||||
METHOD System.Boolean TryDecode(System.ReadOnlySpan<System.Byte> encoded, FinalFactory.Rendezvous.Client.DirectConnectionRequest& request)
|
||||
TYPE FinalFactory.Rendezvous.Client.IRendezvousDelay
|
||||
METHOD System.Threading.Tasks.Task DelayAsync(System.TimeSpan delay, System.Threading.CancellationToken cancellationToken)
|
||||
TYPE FinalFactory.Rendezvous.Client.IRendezvousJoinClient
|
||||
METHOD System.Threading.Tasks.Task<FinalFactory.Rendezvous.Client.RendezvousClientResult<System.Collections.Generic.IReadOnlyList<FinalFactory.Rendezvous.Contracts.HostJoinAttempt>>> BrowseAllForHostAsync(FinalFactory.Rendezvous.Client.PublishedSession session, System.Int32 maximumPages, System.Threading.CancellationToken cancellationToken)
|
||||
METHOD System.Threading.Tasks.Task<FinalFactory.Rendezvous.Client.RendezvousClientResult<FinalFactory.Rendezvous.Contracts.BrowseHostJoinAttemptsResponse>> BrowseForHostAsync(FinalFactory.Rendezvous.Client.PublishedSession session, System.Int32 pageSize, System.String cursor, System.Threading.CancellationToken cancellationToken)
|
||||
METHOD System.Threading.Tasks.Task<FinalFactory.Rendezvous.Client.RendezvousClientResult<System.Boolean>> CancelAsync(FinalFactory.Rendezvous.Contracts.CreateJoinAttemptResponse attempt, System.Threading.CancellationToken cancellationToken)
|
||||
METHOD System.Threading.Tasks.Task<FinalFactory.Rendezvous.Client.RendezvousClientResult<FinalFactory.Rendezvous.Contracts.CreateJoinAttemptResponse>> CreateAsync(FinalFactory.Rendezvous.Contracts.CreateJoinAttemptRequest request, System.Threading.CancellationToken cancellationToken)
|
||||
TYPE FinalFactory.Rendezvous.Client.IRendezvousPublisherClient
|
||||
METHOD System.Threading.Tasks.Task<FinalFactory.Rendezvous.Client.RendezvousClientResult<System.Boolean>> DeregisterAsync(FinalFactory.Rendezvous.Client.PublishedSession session, System.String publisherCredential, System.Threading.CancellationToken cancellationToken)
|
||||
METHOD System.Threading.Tasks.Task<FinalFactory.Rendezvous.Client.RendezvousClientResult<FinalFactory.Rendezvous.Client.PublishedSession>> RegisterAsync(FinalFactory.Rendezvous.Contracts.RegisterSessionRequest request, System.String publisherCredential, System.Threading.CancellationToken cancellationToken)
|
||||
@@ -41,6 +56,17 @@ TYPE FinalFactory.Rendezvous.Client.PublishedSession
|
||||
PROP System.String LeaseToken {get;}
|
||||
PROP FinalFactory.Rendezvous.Contracts.SessionListingId ListingId {get;}
|
||||
METHOD System.String ToString()
|
||||
TYPE FinalFactory.Rendezvous.Client.RendezvousClientCoordinator
|
||||
CTOR (LiteNetLib.NetManager manager, FinalFactory.Rendezvous.Client.RendezvousNetListener networkEvents, System.Net.IPEndPoint mediator, FinalFactory.Rendezvous.Contracts.CreateJoinAttemptResponse attempt, FinalFactory.Rendezvous.Client.RendezvousCoordinatorOptions options)
|
||||
PROP LiteNetLib.NetPeer ConnectedPeer {get;}
|
||||
PROP System.Boolean IsCompleted {get;}
|
||||
PROP FinalFactory.Rendezvous.Client.RendezvousConnectionState State {get;}
|
||||
EVENT System.EventHandler<FinalFactory.Rendezvous.Client.RendezvousConnectionCompletedEventArgs> Completed
|
||||
METHOD System.Void Cancel()
|
||||
METHOD System.Threading.Tasks.Task<FinalFactory.Rendezvous.Client.RendezvousClientResult<System.Boolean>> CancelAsync(FinalFactory.Rendezvous.Client.IRendezvousJoinClient joinClient, System.Threading.CancellationToken cancellationToken)
|
||||
METHOD System.Void Dispose()
|
||||
METHOD System.Void Poll()
|
||||
METHOD System.String ToString()
|
||||
TYPE FinalFactory.Rendezvous.Client.RendezvousClientOptions
|
||||
CTOR ()
|
||||
PROP System.TimeSpan InitialRetryDelay {get;set;}
|
||||
@@ -56,6 +82,66 @@ TYPE FinalFactory.Rendezvous.Client.RendezvousClientResult<T>
|
||||
PROP System.String Message {get;}
|
||||
PROP System.Nullable<System.Int32> RetryAfterSeconds {get;}
|
||||
PROP T Value {get;}
|
||||
TYPE FinalFactory.Rendezvous.Client.RendezvousConnectionCompletedEventArgs
|
||||
CTOR (FinalFactory.Rendezvous.Client.RendezvousConnectionState state, LiteNetLib.NetPeer peer)
|
||||
PROP LiteNetLib.NetPeer Peer {get;}
|
||||
PROP FinalFactory.Rendezvous.Client.RendezvousConnectionState State {get;}
|
||||
TYPE FinalFactory.Rendezvous.Client.RendezvousConnectionState
|
||||
ENUM Punching=1
|
||||
ENUM Connecting=2
|
||||
ENUM Connected=3
|
||||
ENUM Cancelled=4
|
||||
ENUM TimedOut=5
|
||||
ENUM Rejected=6
|
||||
ENUM ManagerStopped=7
|
||||
ENUM Disposed=8
|
||||
TYPE FinalFactory.Rendezvous.Client.RendezvousCoordinatorOptions
|
||||
CTOR ()
|
||||
PROP System.TimeSpan ConnectionTicketLifetime {get;set;}
|
||||
PROP System.TimeSpan InitialPunchRetryDelay {get;set;}
|
||||
PROP System.Double JitterRatio {get;set;}
|
||||
PROP System.Int32 MaximumAttemptChecksPerPoll {get;set;}
|
||||
PROP System.Int32 MaximumPunchRequests {get;set;}
|
||||
PROP System.TimeSpan MaximumPunchRetryDelay {get;set;}
|
||||
TYPE FinalFactory.Rendezvous.Client.RendezvousHostAttemptCompletedEventArgs
|
||||
CTOR (FinalFactory.Rendezvous.Contracts.JoinAttemptId attemptId, FinalFactory.Rendezvous.Client.RendezvousConnectionState state, LiteNetLib.NetPeer peer)
|
||||
PROP FinalFactory.Rendezvous.Contracts.JoinAttemptId AttemptId {get;}
|
||||
PROP LiteNetLib.NetPeer Peer {get;}
|
||||
PROP FinalFactory.Rendezvous.Client.RendezvousConnectionState State {get;}
|
||||
TYPE FinalFactory.Rendezvous.Client.RendezvousHostCoordinator
|
||||
CTOR (LiteNetLib.NetManager manager, FinalFactory.Rendezvous.Client.RendezvousNetListener networkEvents, System.Net.IPEndPoint mediator, FinalFactory.Rendezvous.Client.PublishedSession session, FinalFactory.Rendezvous.Client.IRendezvousJoinClient joinClient, FinalFactory.Rendezvous.Client.RendezvousCoordinatorOptions options)
|
||||
PROP System.Int32 PendingAttemptCount {get;}
|
||||
PROP FinalFactory.Rendezvous.Client.RendezvousHostState State {get;}
|
||||
EVENT System.EventHandler<FinalFactory.Rendezvous.Client.RendezvousHostAttemptCompletedEventArgs> AttemptCompleted
|
||||
METHOD System.Void Dispose()
|
||||
METHOD System.Void Poll()
|
||||
METHOD System.Threading.Tasks.Task<FinalFactory.Rendezvous.Client.RendezvousClientResult<System.Int32>> RefreshJoinAttemptsAsync(System.Threading.CancellationToken cancellationToken)
|
||||
METHOD System.String ToString()
|
||||
TYPE FinalFactory.Rendezvous.Client.RendezvousHostState
|
||||
ENUM Active=1
|
||||
ENUM ManagerStopped=2
|
||||
ENUM Disposed=3
|
||||
TYPE FinalFactory.Rendezvous.Client.RendezvousJoinClient
|
||||
CTOR (System.Net.Http.HttpClient httpClient, FinalFactory.Rendezvous.Client.RendezvousClientOptions options, FinalFactory.Rendezvous.Client.IRendezvousDelay delay)
|
||||
METHOD System.Threading.Tasks.Task<FinalFactory.Rendezvous.Client.RendezvousClientResult<System.Collections.Generic.IReadOnlyList<FinalFactory.Rendezvous.Contracts.HostJoinAttempt>>> BrowseAllForHostAsync(FinalFactory.Rendezvous.Client.PublishedSession session, System.Int32 maximumPages, System.Threading.CancellationToken cancellationToken)
|
||||
METHOD System.Threading.Tasks.Task<FinalFactory.Rendezvous.Client.RendezvousClientResult<FinalFactory.Rendezvous.Contracts.BrowseHostJoinAttemptsResponse>> BrowseForHostAsync(FinalFactory.Rendezvous.Client.PublishedSession session, System.Int32 pageSize, System.String cursor, System.Threading.CancellationToken cancellationToken)
|
||||
METHOD System.Threading.Tasks.Task<FinalFactory.Rendezvous.Client.RendezvousClientResult<System.Boolean>> CancelAsync(FinalFactory.Rendezvous.Contracts.CreateJoinAttemptResponse attempt, System.Threading.CancellationToken cancellationToken)
|
||||
METHOD System.Threading.Tasks.Task<FinalFactory.Rendezvous.Client.RendezvousClientResult<FinalFactory.Rendezvous.Contracts.CreateJoinAttemptResponse>> CreateAsync(FinalFactory.Rendezvous.Contracts.CreateJoinAttemptRequest request, System.Threading.CancellationToken cancellationToken)
|
||||
TYPE FinalFactory.Rendezvous.Client.RendezvousNetListener
|
||||
CTOR ()
|
||||
PROP LiteNetLib.EventBasedNetListener GameplayEvents {get;}
|
||||
PROP LiteNetLib.EventBasedNatPunchListener PunchEvents {get;}
|
||||
METHOD LiteNetLib.NetManager CreateManager()
|
||||
METHOD System.Void OnConnectionRequest(LiteNetLib.ConnectionRequest request)
|
||||
METHOD System.Void OnMessageDelivered(LiteNetLib.NetPeer peer, System.Object userData)
|
||||
METHOD System.Void OnNetworkError(System.Net.IPEndPoint endPoint, System.Net.Sockets.SocketError socketError)
|
||||
METHOD System.Void OnNetworkLatencyUpdate(LiteNetLib.NetPeer peer, System.Int32 latency)
|
||||
METHOD System.Void OnNetworkReceive(LiteNetLib.NetPeer peer, LiteNetLib.NetPacketReader reader, System.Byte channelNumber, LiteNetLib.DeliveryMethod deliveryMethod)
|
||||
METHOD System.Void OnNetworkReceiveUnconnected(System.Net.IPEndPoint remoteEndPoint, LiteNetLib.NetPacketReader reader, LiteNetLib.UnconnectedMessageType messageType)
|
||||
METHOD System.Void OnNtpResponse(LiteNetLib.Utils.NtpPacket packet)
|
||||
METHOD System.Void OnPeerAddressChanged(LiteNetLib.NetPeer peer, System.Net.IPEndPoint previousAddress)
|
||||
METHOD System.Void OnPeerConnected(LiteNetLib.NetPeer peer)
|
||||
METHOD System.Void OnPeerDisconnected(LiteNetLib.NetPeer peer, LiteNetLib.DisconnectInfo disconnectInfo)
|
||||
TYPE FinalFactory.Rendezvous.Client.RendezvousPublisherClient
|
||||
CTOR (System.Net.Http.HttpClient httpClient, FinalFactory.Rendezvous.Client.RendezvousClientOptions options, FinalFactory.Rendezvous.Client.IRendezvousDelay delay)
|
||||
METHOD FinalFactory.Rendezvous.Client.SessionLeaseMaintainer CreateLeaseMaintainer(FinalFactory.Rendezvous.Client.PublishedSession session, System.String publisherCredential)
|
||||
|
||||
@@ -98,6 +98,7 @@ TYPE FinalFactory.Rendezvous.Contracts.CreateJoinAttemptResponse
|
||||
CTOR ()
|
||||
PROP FinalFactory.Rendezvous.Contracts.JoinAttemptId AttemptId {get;set;}
|
||||
PROP System.String ClientPunchCapability {get;set;}
|
||||
PROP System.String ConnectionTicketDigest {get;set;}
|
||||
PROP System.Int32 ContractVersion {get;set;}
|
||||
PROP FinalFactory.Rendezvous.Contracts.NetworkEndpoint DedicatedFallback {get;set;}
|
||||
PROP System.DateTimeOffset ExpiresAt {get;set;}
|
||||
@@ -137,8 +138,10 @@ TYPE FinalFactory.Rendezvous.Contracts.HealthResponse
|
||||
TYPE FinalFactory.Rendezvous.Contracts.HostJoinAttempt
|
||||
CTOR ()
|
||||
PROP FinalFactory.Rendezvous.Contracts.JoinAttemptId AttemptId {get;set;}
|
||||
PROP System.String ConnectionTicketDigest {get;set;}
|
||||
PROP System.DateTimeOffset ExpiresAt {get;set;}
|
||||
PROP System.String HostPunchCapability {get;set;}
|
||||
PROP System.Boolean IsCancelled {get;set;}
|
||||
PROP FinalFactory.Rendezvous.Contracts.MediationHandle MediationHandle {get;set;}
|
||||
TYPE FinalFactory.Rendezvous.Contracts.JoinAttemptId
|
||||
CTOR (System.Guid value)
|
||||
@@ -173,6 +176,17 @@ TYPE FinalFactory.Rendezvous.Contracts.MediationHandle
|
||||
METHOD System.Boolean TryParse(System.String value, FinalFactory.Rendezvous.Contracts.MediationHandle& id)
|
||||
METHOD System.Boolean op_Equality(FinalFactory.Rendezvous.Contracts.MediationHandle left, FinalFactory.Rendezvous.Contracts.MediationHandle right)
|
||||
METHOD System.Boolean op_Inequality(FinalFactory.Rendezvous.Contracts.MediationHandle left, FinalFactory.Rendezvous.Contracts.MediationHandle right)
|
||||
TYPE FinalFactory.Rendezvous.Contracts.NatIntroductionToken
|
||||
CTOR ()
|
||||
PROP FinalFactory.Rendezvous.Contracts.JoinAttemptId AttemptId {get;set;}
|
||||
PROP System.String ConnectionTicket {get;set;}
|
||||
METHOD System.String ToString()
|
||||
TYPE FinalFactory.Rendezvous.Contracts.NatIntroductionTokenCodec
|
||||
FIELD System.Int32 EncodedLength=43
|
||||
METHOD System.String ComputeDigest(System.String connectionTicket)
|
||||
METHOD System.String Encode(FinalFactory.Rendezvous.Contracts.JoinAttemptId attemptId, System.String derivedAuthenticator)
|
||||
METHOD System.Boolean MatchesDigest(System.String connectionTicket, System.String expectedDigest)
|
||||
METHOD System.Boolean TryDecode(System.String encoded, FinalFactory.Rendezvous.Contracts.NatIntroductionToken& token)
|
||||
TYPE FinalFactory.Rendezvous.Contracts.NatPunchPeerRole
|
||||
ENUM HostPresence=1
|
||||
ENUM Host=2
|
||||
|
||||
@@ -1 +1 @@
|
||||
{"contractVersion":1,"attemptId":"11112233-4455-6677-8899-aabbccddeeff","mediationHandle":"22222233-4455-6677-8899-aabbccddeeff","clientPunchCapability":"Abc_123-xYz","expiresAt":"2026-07-16T12:00:00+00:00","dedicatedFallback":{"addressFamily":"ipv6","address":"2001:db8::10","port":9050}}
|
||||
{"contractVersion":1,"attemptId":"11112233-4455-6677-8899-aabbccddeeff","mediationHandle":"22222233-4455-6677-8899-aabbccddeeff","clientPunchCapability":"Abc_123-xYz","connectionTicketDigest":"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA","expiresAt":"2026-07-16T12:00:00+00:00","dedicatedFallback":{"addressFamily":"ipv6","address":"2001:db8::10","port":9050}}
|
||||
|
||||
Reference in New Issue
Block a user