Files
mROA/mROA/Implementation/NetworkMessageHeader.cs
T

55 lines
1.6 KiB
C#
Raw Normal View History

using System;
using System.Text.Json.Serialization;
using mROA.Abstract;
using mROA.Implementation.Attributes;
2025-03-13 20:01:17 +03:00
// ReSharper disable UnusedMember.Global
namespace mROA.Implementation
{
2025-03-31 10:34:04 +03:00
public class NetworkMessageHeader
{
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();
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)
{
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();
}
public Guid Id { get; set; }
2025-03-13 20:01:17 +03:00
[JsonConverter(typeof(JsonStringEnumConverter))]
public EMessageType MessageType { get; set; }
public byte[] Data { get; set; }
[JsonIgnore]
[SerializationIgnore]
public object Parced { get; set; }
}
}