using System;
using System.Collections.Generic;
using UnityEngine.Scripting;
using System.Runtime.Serialization;
using Newtonsoft.Json;
using Newtonsoft.Json.Converters;
using Unity.Services.Relay.Http;
namespace Unity.Services.Relay.Models
{
///
/// An allocation created via a join code
/// ID of the allocation
/// Connection endpoints for the assigned relay server
/// relayServer param
/// Base64-encoded key required for the HMAC signature of the BIND message
/// Base64 encoded representation of an encrypted connection data blob describing this allocation. Required for establishing communication with other players.
/// Base64 encoded form of AllocationID. When decoded, this is the exact expected byte alignment to be used when crafting relay protocol messages that require AllocationID. eg. PING, CONNECT, RELAY, CLOSE, etc.
/// Base64 encoded representation of an encrypted connection data blob describing the allocation and relay server of the player who created the join code. Used for establishing communication with the host.
///
[Preserve]
[DataContract(Name = "JoinAllocation")]
public class JoinAllocation
{
///
/// An allocation created via a join code
///
/// ID of the allocation
/// Connection endpoints for the assigned relay server
/// relayServer param
/// Base64-encoded key required for the HMAC signature of the BIND message
/// Base64 encoded representation of an encrypted connection data blob describing this allocation. Required for establishing communication with other players.
/// Base64 encoded form of AllocationID. When decoded, this is the exact expected byte alignment to be used when crafting relay protocol messages that require AllocationID. eg. PING, CONNECT, RELAY, CLOSE, etc.
/// Base64 encoded representation of an encrypted connection data blob describing the allocation and relay server of the player who created the join code. Used for establishing communication with the host.
[Preserve]
public JoinAllocation(System.Guid allocationId, List serverEndpoints, RelayServer relayServer, byte[] key, byte[] connectionData, byte[] allocationIdBytes, byte[] hostConnectionData)
{
AllocationId = allocationId;
ServerEndpoints = serverEndpoints;
RelayServer = relayServer;
Key = key;
ConnectionData = connectionData;
AllocationIdBytes = allocationIdBytes;
HostConnectionData = hostConnectionData;
}
///
/// ID of the allocation
///
[Preserve]
[DataMember(Name = "allocationId", IsRequired = true, EmitDefaultValue = true)]
public System.Guid AllocationId{ get; }
///
/// Connection endpoints for the assigned relay server
///
[Preserve]
[DataMember(Name = "serverEndpoints", IsRequired = true, EmitDefaultValue = true)]
public List ServerEndpoints{ get; }
[Preserve]
[DataMember(Name = "relayServer", IsRequired = true, EmitDefaultValue = true)]
public RelayServer RelayServer{ get; }
///
/// Base64-encoded key required for the HMAC signature of the BIND message
///
[Preserve]
[DataMember(Name = "key", IsRequired = true, EmitDefaultValue = true)]
public byte[] Key{ get; }
///
/// Base64 encoded representation of an encrypted connection data blob describing this allocation. Required for establishing communication with other players.
///
[Preserve]
[DataMember(Name = "connectionData", IsRequired = true, EmitDefaultValue = true)]
public byte[] ConnectionData{ get; }
///
/// Base64 encoded form of AllocationID. When decoded, this is the exact expected byte alignment to be used when crafting relay protocol messages that require AllocationID. eg. PING, CONNECT, RELAY, CLOSE, etc.
///
[Preserve]
[DataMember(Name = "allocationIdBytes", IsRequired = true, EmitDefaultValue = true)]
public byte[] AllocationIdBytes{ get; }
///
/// Base64 encoded representation of an encrypted connection data blob describing the allocation and relay server of the player who created the join code. Used for establishing communication with the host.
///
[Preserve]
[DataMember(Name = "hostConnectionData", IsRequired = true, EmitDefaultValue = true)]
public byte[] HostConnectionData{ get; }
}
}