Rewrite dictionary to if and using structs

This commit is contained in:
2025-07-10 10:25:40 +03:00
parent 9a5c9de3b0
commit a5a23354f9
7 changed files with 64 additions and 23 deletions
@@ -8,7 +8,7 @@ namespace mROA.Implementation
{
public class CancellationRepository : ICancellationRepository
{
private ConcurrentDictionary<Guid, CancellationTokenSource> _cancellations = new();
private readonly ConcurrentDictionary<Guid, CancellationTokenSource> _cancellations = new();
public void RegisterCancellation(Guid id, CancellationTokenSource cts)
{
@@ -127,7 +127,7 @@ namespace mROA.Implementation
}
else
{
await _trustedWriter.WriteAsync(new NetworkMessageHeader());
await _trustedWriter.WriteAsync(new NetworkMessageHeader(){Data = Array.Empty<byte>()});
}
PassReconnection();
@@ -5,14 +5,16 @@ using mROA.Abstract;
namespace mROA.Implementation.CommandExecution
{
public class FinalCommandExecution : ICommandExecution
public struct FinalCommandExecution : ICommandExecution
{
public Guid Id { get; set; }
public EMessageType MessageType => EMessageType.FinishedCommandExecution;
}
public class FinalCommandExecution<T> : FinalCommandExecution
public struct FinalCommandExecution<T> : ICommandExecution
{
public Guid Id { get; set; }
public EMessageType MessageType => EMessageType.FinishedCommandExecution;
public T? Result { get; set; }
}
}
+5 -7
View File
@@ -5,7 +5,7 @@ using mROA.Abstract;
namespace mROA.Implementation
{
public class NetworkMessageHeader
public struct NetworkMessageHeader
{
private bool Equals(NetworkMessageHeader other)
{
@@ -21,12 +21,10 @@ namespace mROA.Implementation
}
public static readonly NetworkMessageHeader Null = new();
public NetworkMessageHeader()
{
Id = Guid.NewGuid();
MessageType = EMessageType.Unknown;
Data = Array.Empty<byte>();
}
// public NetworkMessageHeader()
// {
// Data = Array.Empty<byte>();
// }
public NetworkMessageHeader(IContextualSerializationToolKit serializationToolkit,
INetworkMessage networkMessage, IEndPointContext? context)
{
+11 -3
View File
@@ -71,9 +71,17 @@ namespace mROA.Implementation
continue;
}
var type = converter.Select(i => i(message)).First(i => i != null)!;
var deserialized = _serialization.Deserialize(message.Data, type, context);
yield return (deserialized, message.MessageType)!;
for (int i = 0; i < converter.Length; i++)
{
var func = converter[i];
if (func(message) is {} t)
{
var deserialized = _serialization.Deserialize(message.Data, t, context);
yield return (deserialized, message.MessageType)!;
break;
}
}
}
}