2025-02-20 16:10:09 +03:00
|
|
|
using System;
|
|
|
|
|
using System.Text.Json.Serialization;
|
2025-03-31 12:27:46 +03:00
|
|
|
using mROA.Abstract;
|
2025-05-02 13:34:40 +03:00
|
|
|
using mROA.Implementation.Attributes;
|
2025-03-13 20:01:17 +03:00
|
|
|
|
2025-02-18 22:43:16 +03:00
|
|
|
// ReSharper disable UnusedMember.Global
|
2025-02-12 12:34:54 +03:00
|
|
|
|
2025-02-20 16:10:09 +03:00
|
|
|
namespace mROA.Implementation
|
2025-02-12 12:34:54 +03:00
|
|
|
{
|
2025-03-31 10:34:04 +03:00
|
|
|
public class NetworkMessageHeader
|
2025-02-20 16:10:09 +03:00
|
|
|
{
|
2025-05-02 12:08:31 +03:00
|
|
|
protected bool Equals(NetworkMessageHeader other)
|
|
|
|
|
{
|
|
|
|
|
return Id.Equals(other.Id) && MessageType == other.MessageType;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public override bool Equals(object? obj)
|
|
|
|
|
{
|
|
|
|
|
if (obj is null) return false;
|
|
|
|
|
if (ReferenceEquals(this, obj)) return true;
|
|
|
|
|
if (obj.GetType() != GetType()) return false;
|
|
|
|
|
return Equals((NetworkMessageHeader)obj);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public override int GetHashCode()
|
|
|
|
|
{
|
|
|
|
|
return HashCode.Combine(Id, (int)MessageType);
|
|
|
|
|
}
|
|
|
|
|
|
2025-04-09 14:11:31 +03:00
|
|
|
public static readonly NetworkMessageHeader Null = new();
|
2025-03-31 12:27:46 +03:00
|
|
|
public NetworkMessageHeader()
|
|
|
|
|
{
|
|
|
|
|
Id = Guid.NewGuid();
|
|
|
|
|
MessageType = EMessageType.Unknown;
|
|
|
|
|
Data = Array.Empty<byte>();
|
|
|
|
|
}
|
2025-05-04 19:49:15 +03:00
|
|
|
public NetworkMessageHeader(IContextualSerializationToolKit serializationToolkit,
|
|
|
|
|
INetworkMessage networkMessage, IEndPointContext context)
|
2025-03-31 12:27:46 +03:00
|
|
|
{
|
|
|
|
|
MessageType = networkMessage.MessageType;
|
2025-05-04 19:49:15 +03:00
|
|
|
Data = serializationToolkit.Serialize(networkMessage, context);
|
2025-04-08 22:42:00 +03:00
|
|
|
Id = Guid.NewGuid();
|
2025-03-31 12:27:46 +03:00
|
|
|
}
|
2025-02-20 16:10:09 +03:00
|
|
|
public Guid Id { get; set; }
|
2025-03-13 20:01:17 +03:00
|
|
|
|
2025-02-20 16:10:09 +03:00
|
|
|
[JsonConverter(typeof(JsonStringEnumConverter))]
|
2025-03-31 12:27:46 +03:00
|
|
|
public EMessageType MessageType { get; set; }
|
2025-02-18 22:06:20 +03:00
|
|
|
|
2025-02-20 16:10:09 +03:00
|
|
|
public byte[] Data { get; set; }
|
2025-05-02 13:34:40 +03:00
|
|
|
|
|
|
|
|
[JsonIgnore]
|
|
|
|
|
[SerializationIgnore]
|
|
|
|
|
public object Parced { get; set; }
|
2025-02-20 16:10:09 +03:00
|
|
|
}
|
2025-02-12 12:34:54 +03:00
|
|
|
}
|