35 lines
1.2 KiB
C#
35 lines
1.2 KiB
C#
using ChatRoom.Centralized.Shared.ObjectModels;
|
|
using System.Text;
|
|
|
|
namespace ChatRoom.Centralized.Shared.Packets;
|
|
|
|
public class ServerHelloResponsePacket : INetworkPacket<ServerHelloResponsePacket>
|
|
{
|
|
public static string Signature => "sHIr";
|
|
|
|
public long Latency => (long)(ServerRecieved - ClientSent).TotalMilliseconds;
|
|
|
|
public required DateTimeOffset ClientSent { get; set; }
|
|
public required DateTimeOffset ServerRecieved { get; set; }
|
|
|
|
public required PublicServerInfo Information { get; set; }
|
|
|
|
public void WriteData(BinaryWriter writer)
|
|
{
|
|
writer.Write(ClientSent.ToUnixTimeMilliseconds());
|
|
writer.Write(ServerRecieved.ToUnixTimeMilliseconds());
|
|
writer.Write(Information.Name);
|
|
writer.Write(Information.Description);
|
|
}
|
|
public static ServerHelloResponsePacket ReadData(BinaryReader reader) => new()
|
|
{
|
|
ClientSent = DateTimeOffset.FromUnixTimeMilliseconds(reader.ReadInt64()),
|
|
ServerRecieved = DateTimeOffset.FromUnixTimeMilliseconds(reader.ReadInt64()),
|
|
Information = new()
|
|
{
|
|
Name = reader.ReadString(),
|
|
Description = reader.ReadString()
|
|
}
|
|
};
|
|
}
|