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);
|
||||
|
||||
|
||||
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;
|
||||
streamExtractor.MessageReceived = message => { interaction.ReceiveChanel.Writer.WriteAsync(message); };
|
||||
streamExtractor.SingleReceive();
|
||||
@@ -94,14 +97,14 @@ namespace mROA.Implementation.Backend
|
||||
Task.Run(async () => await streamExtractor.LoopedReceive(cts.Token));
|
||||
_ = streamExtractor.SendFromChannel(interaction.TrustedPostChanel, cts.Token);
|
||||
interaction.PostMessageAsync(new NetworkMessageHeader(_serialization!,
|
||||
new IdAssignment { Id = -interaction.ConnectionId }, TODO));
|
||||
new IdAssignment { Id = -interaction.ConnectionId }, null));
|
||||
_extractorsCTS[interaction.ConnectionId] = cts;
|
||||
_hub!.RegisterInteraction(interaction);
|
||||
Console.WriteLine("Client registered");
|
||||
break;
|
||||
case EMessageType.ClientRecovery:
|
||||
{
|
||||
var recoveryRequest = _serialization!.Deserialize<ClientRecovery>(connectionRequest.Data)!;
|
||||
var recoveryRequest = _serialization!.Deserialize<ClientRecovery>(connectionRequest.Data, null);
|
||||
var recoveryInteraction = _hub.GetInteraction(recoveryRequest.Id);
|
||||
|
||||
_extractorsCTS[recoveryRequest.Id].Cancel();
|
||||
|
||||
@@ -137,12 +137,12 @@ namespace mROA.Implementation.Frontend
|
||||
|
||||
private void HandleCancelRequest(CancelRequest req)
|
||||
{
|
||||
_executeModule!.Execute(req, _realContextRepository!, _representationModule!);
|
||||
_executeModule!.Execute(req, _realContextRepository!, _representationModule!, _context);
|
||||
}
|
||||
|
||||
private void HandleCallRequest(DefaultCallRequest request)
|
||||
{
|
||||
var result = _executeModule!.Execute(request, _realContextRepository!, _representationModule!);
|
||||
var result = _executeModule!.Execute(request, _realContextRepository!, _representationModule!, _context);
|
||||
|
||||
var resultType = result.MessageType;
|
||||
|
||||
@@ -156,7 +156,7 @@ namespace mROA.Implementation.Frontend
|
||||
|
||||
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 IChannelInteractionModule _channelInteractionModule;
|
||||
private CancellationTokenSource _tokenSource = new();
|
||||
|
||||
private IEndPointContext _context;
|
||||
public void Dispose()
|
||||
{
|
||||
_tokenSource.Cancel();
|
||||
@@ -35,7 +35,7 @@ namespace mROA.Implementation.Frontend
|
||||
while (token.IsCancellationRequested == false)
|
||||
{
|
||||
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);
|
||||
}
|
||||
@@ -49,7 +49,7 @@ namespace mROA.Implementation.Frontend
|
||||
Data = BitConverter.GetBytes(Math.Abs(_channelInteractionModule.ConnectionId))
|
||||
};
|
||||
|
||||
var initParsed = _serializationToolkit.Serialize(initMessage);
|
||||
var initParsed = _serializationToolkit.Serialize(initMessage, _context);
|
||||
|
||||
await udpClient.SendAsync(initParsed, initParsed.Length);
|
||||
|
||||
@@ -59,7 +59,7 @@ namespace mROA.Implementation.Frontend
|
||||
or EMessageType.EventRequest))
|
||||
continue;
|
||||
|
||||
var serialized = _serializationToolkit.Serialize(post);
|
||||
var serialized = _serializationToolkit.Serialize(post, _context);
|
||||
#if TRACE
|
||||
Console.WriteLine("Untrusted write start");
|
||||
#endif
|
||||
@@ -80,6 +80,9 @@ namespace mROA.Implementation.Frontend
|
||||
case IContextualSerializationToolKit serializationToolkit:
|
||||
_serializationToolkit = serializationToolkit;
|
||||
break;
|
||||
case IEndPointContext endPointContext:
|
||||
_context = endPointContext;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -35,7 +35,7 @@ namespace mROA.Implementation
|
||||
Data = Array.Empty<byte>();
|
||||
}
|
||||
public NetworkMessageHeader(IContextualSerializationToolKit serializationToolkit,
|
||||
INetworkMessage networkMessage, IEndPointContext context)
|
||||
INetworkMessage networkMessage, IEndPointContext? context)
|
||||
{
|
||||
MessageType = networkMessage.MessageType;
|
||||
Data = serializationToolkit.Serialize(networkMessage, context);
|
||||
|
||||
Reference in New Issue
Block a user