75 lines
2.4 KiB
C#
75 lines
2.4 KiB
C#
using System;
|
|
using System.Runtime.InteropServices;
|
|
|
|
namespace FastArena.Network.Packets
|
|
{
|
|
[StructLayout(LayoutKind.Sequential)]
|
|
internal readonly struct ConnectionRequestTCP
|
|
{
|
|
internal readonly PacketHeader header;
|
|
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
|
|
internal readonly byte[] clientKey;
|
|
|
|
public ConnectionRequestTCP(byte[] clientKey)
|
|
{
|
|
header = new PacketHeader(PacketType.ConnectionRequestTCP);
|
|
this.clientKey = clientKey;
|
|
}
|
|
}
|
|
|
|
[StructLayout(LayoutKind.Sequential)]
|
|
internal readonly struct ConnectionResponseTCP
|
|
{
|
|
internal readonly PacketHeader header;
|
|
internal readonly StatusCode statusCode;
|
|
internal readonly Guid sessionId;
|
|
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
|
|
internal readonly byte[] serverKey;
|
|
|
|
public ConnectionResponseTCP(StatusCode statusCode, Guid sessionId, byte[] serverKey)
|
|
{
|
|
header = new PacketHeader(PacketType.ConnectionResponseTCP);
|
|
this.statusCode = statusCode;
|
|
this.sessionId = sessionId;
|
|
this.serverKey = serverKey;
|
|
}
|
|
|
|
public void ValidateResponseCode()
|
|
{
|
|
if (statusCode != StatusCode.OK)
|
|
throw new StatusCodeException(statusCode);
|
|
}
|
|
}
|
|
|
|
[StructLayout(LayoutKind.Sequential)]
|
|
internal readonly struct ConnectionRequestUDP
|
|
{
|
|
internal readonly PacketHeader header;
|
|
internal readonly Guid sessionId;
|
|
|
|
public ConnectionRequestUDP(Guid sessionId)
|
|
{
|
|
header = new PacketHeader(PacketType.ConnectionRequestUDP);
|
|
this.sessionId = sessionId;
|
|
}
|
|
}
|
|
|
|
[StructLayout(LayoutKind.Sequential)]
|
|
internal readonly struct ConnectionResponseUDP
|
|
{
|
|
internal readonly PacketHeader header;
|
|
internal readonly StatusCode statusCode;
|
|
|
|
public ConnectionResponseUDP(StatusCode statusCode)
|
|
{
|
|
header = new PacketHeader(PacketType.ConnectionResponseUDP);
|
|
this.statusCode = statusCode;
|
|
}
|
|
|
|
public void ValidateResponseCode()
|
|
{
|
|
if (statusCode != StatusCode.OK)
|
|
throw new StatusCodeException(statusCode);
|
|
}
|
|
}
|
|
} |