Rewrite dictionary to if and using structs
This commit is contained in:
@@ -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 +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)
|
||||
{
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user