All modules solved, just NetworkGatewayModule.cs logic must remake
This commit is contained in:
@@ -80,7 +80,10 @@ namespace mROA.Implementation.Backend
|
|||||||
interaction!.Inject(_serialization);
|
interaction!.Inject(_serialization);
|
||||||
|
|
||||||
|
|
||||||
var streamExtractor = new ChannelInteractionModule.StreamExtractor(client.GetStream(), _serialization);
|
//TODO сделать контекст
|
||||||
|
var context = new EndPointContext();
|
||||||
|
|
||||||
|
var streamExtractor = new ChannelInteractionModule.StreamExtractor(client.GetStream(), _serialization, context);
|
||||||
interaction.IsConnected = () => streamExtractor.IsConnected;
|
interaction.IsConnected = () => streamExtractor.IsConnected;
|
||||||
streamExtractor.MessageReceived = message => { interaction.ReceiveChanel.Writer.WriteAsync(message); };
|
streamExtractor.MessageReceived = message => { interaction.ReceiveChanel.Writer.WriteAsync(message); };
|
||||||
streamExtractor.SingleReceive();
|
streamExtractor.SingleReceive();
|
||||||
@@ -94,14 +97,14 @@ namespace mROA.Implementation.Backend
|
|||||||
Task.Run(async () => await streamExtractor.LoopedReceive(cts.Token));
|
Task.Run(async () => await streamExtractor.LoopedReceive(cts.Token));
|
||||||
_ = streamExtractor.SendFromChannel(interaction.TrustedPostChanel, cts.Token);
|
_ = streamExtractor.SendFromChannel(interaction.TrustedPostChanel, cts.Token);
|
||||||
interaction.PostMessageAsync(new NetworkMessageHeader(_serialization!,
|
interaction.PostMessageAsync(new NetworkMessageHeader(_serialization!,
|
||||||
new IdAssignment { Id = -interaction.ConnectionId }, TODO));
|
new IdAssignment { Id = -interaction.ConnectionId }, null));
|
||||||
_extractorsCTS[interaction.ConnectionId] = cts;
|
_extractorsCTS[interaction.ConnectionId] = cts;
|
||||||
_hub!.RegisterInteraction(interaction);
|
_hub!.RegisterInteraction(interaction);
|
||||||
Console.WriteLine("Client registered");
|
Console.WriteLine("Client registered");
|
||||||
break;
|
break;
|
||||||
case EMessageType.ClientRecovery:
|
case EMessageType.ClientRecovery:
|
||||||
{
|
{
|
||||||
var recoveryRequest = _serialization!.Deserialize<ClientRecovery>(connectionRequest.Data)!;
|
var recoveryRequest = _serialization!.Deserialize<ClientRecovery>(connectionRequest.Data, null);
|
||||||
var recoveryInteraction = _hub.GetInteraction(recoveryRequest.Id);
|
var recoveryInteraction = _hub.GetInteraction(recoveryRequest.Id);
|
||||||
|
|
||||||
_extractorsCTS[recoveryRequest.Id].Cancel();
|
_extractorsCTS[recoveryRequest.Id].Cancel();
|
||||||
|
|||||||
@@ -137,12 +137,12 @@ namespace mROA.Implementation.Frontend
|
|||||||
|
|
||||||
private void HandleCancelRequest(CancelRequest req)
|
private void HandleCancelRequest(CancelRequest req)
|
||||||
{
|
{
|
||||||
_executeModule!.Execute(req, _realContextRepository!, _representationModule!);
|
_executeModule!.Execute(req, _realContextRepository!, _representationModule!, _context);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void HandleCallRequest(DefaultCallRequest request)
|
private void HandleCallRequest(DefaultCallRequest request)
|
||||||
{
|
{
|
||||||
var result = _executeModule!.Execute(request, _realContextRepository!, _representationModule!);
|
var result = _executeModule!.Execute(request, _realContextRepository!, _representationModule!, _context);
|
||||||
|
|
||||||
var resultType = result.MessageType;
|
var resultType = result.MessageType;
|
||||||
|
|
||||||
@@ -156,7 +156,7 @@ namespace mROA.Implementation.Frontend
|
|||||||
|
|
||||||
private void HandleEventRequest(DefaultCallRequest request)
|
private void HandleEventRequest(DefaultCallRequest request)
|
||||||
{
|
{
|
||||||
_executeModule!.Execute(request, _remoteContextRepository!, _representationModule!);
|
_executeModule!.Execute(request, _remoteContextRepository!, _representationModule!, _context);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -12,7 +12,7 @@ namespace mROA.Implementation.Frontend
|
|||||||
private IContextualSerializationToolKit _serializationToolkit;
|
private IContextualSerializationToolKit _serializationToolkit;
|
||||||
private IChannelInteractionModule _channelInteractionModule;
|
private IChannelInteractionModule _channelInteractionModule;
|
||||||
private CancellationTokenSource _tokenSource = new();
|
private CancellationTokenSource _tokenSource = new();
|
||||||
|
private IEndPointContext _context;
|
||||||
public void Dispose()
|
public void Dispose()
|
||||||
{
|
{
|
||||||
_tokenSource.Cancel();
|
_tokenSource.Cancel();
|
||||||
@@ -35,7 +35,7 @@ namespace mROA.Implementation.Frontend
|
|||||||
while (token.IsCancellationRequested == false)
|
while (token.IsCancellationRequested == false)
|
||||||
{
|
{
|
||||||
var message = new Memory<byte>((await udpClient.ReceiveAsync()).Buffer);
|
var message = new Memory<byte>((await udpClient.ReceiveAsync()).Buffer);
|
||||||
var parsed = _serializationToolkit.Deserialize<NetworkMessageHeader>(message.Span)!;
|
var parsed = _serializationToolkit.Deserialize<NetworkMessageHeader>(message, _context);
|
||||||
|
|
||||||
await writer.WriteAsync(parsed, token);
|
await writer.WriteAsync(parsed, token);
|
||||||
}
|
}
|
||||||
@@ -49,7 +49,7 @@ namespace mROA.Implementation.Frontend
|
|||||||
Data = BitConverter.GetBytes(Math.Abs(_channelInteractionModule.ConnectionId))
|
Data = BitConverter.GetBytes(Math.Abs(_channelInteractionModule.ConnectionId))
|
||||||
};
|
};
|
||||||
|
|
||||||
var initParsed = _serializationToolkit.Serialize(initMessage);
|
var initParsed = _serializationToolkit.Serialize(initMessage, _context);
|
||||||
|
|
||||||
await udpClient.SendAsync(initParsed, initParsed.Length);
|
await udpClient.SendAsync(initParsed, initParsed.Length);
|
||||||
|
|
||||||
@@ -59,7 +59,7 @@ namespace mROA.Implementation.Frontend
|
|||||||
or EMessageType.EventRequest))
|
or EMessageType.EventRequest))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
var serialized = _serializationToolkit.Serialize(post);
|
var serialized = _serializationToolkit.Serialize(post, _context);
|
||||||
#if TRACE
|
#if TRACE
|
||||||
Console.WriteLine("Untrusted write start");
|
Console.WriteLine("Untrusted write start");
|
||||||
#endif
|
#endif
|
||||||
@@ -80,6 +80,9 @@ namespace mROA.Implementation.Frontend
|
|||||||
case IContextualSerializationToolKit serializationToolkit:
|
case IContextualSerializationToolKit serializationToolkit:
|
||||||
_serializationToolkit = serializationToolkit;
|
_serializationToolkit = serializationToolkit;
|
||||||
break;
|
break;
|
||||||
|
case IEndPointContext endPointContext:
|
||||||
|
_context = endPointContext;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -35,7 +35,7 @@ namespace mROA.Implementation
|
|||||||
Data = Array.Empty<byte>();
|
Data = Array.Empty<byte>();
|
||||||
}
|
}
|
||||||
public NetworkMessageHeader(IContextualSerializationToolKit serializationToolkit,
|
public NetworkMessageHeader(IContextualSerializationToolKit serializationToolkit,
|
||||||
INetworkMessage networkMessage, IEndPointContext context)
|
INetworkMessage networkMessage, IEndPointContext? context)
|
||||||
{
|
{
|
||||||
MessageType = networkMessage.MessageType;
|
MessageType = networkMessage.MessageType;
|
||||||
Data = serializationToolkit.Serialize(networkMessage, context);
|
Data = serializationToolkit.Serialize(networkMessage, context);
|
||||||
|
|||||||
Reference in New Issue
Block a user