More modules solved
This commit is contained in:
@@ -94,7 +94,7 @@ 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 }));
|
||||
new IdAssignment { Id = -interaction.ConnectionId }, TODO));
|
||||
_extractorsCTS[interaction.ConnectionId] = cts;
|
||||
_hub!.RegisterInteraction(interaction);
|
||||
Console.WriteLine("Client registered");
|
||||
|
||||
@@ -129,7 +129,7 @@ namespace mROA.Implementation
|
||||
if (sendRecovery)
|
||||
{
|
||||
await PostMessageAsync(
|
||||
new NetworkMessageHeader(_serialization!, new ClientRecovery(Math.Abs(ConnectionId))));
|
||||
new NetworkMessageHeader(_serialization!, new ClientRecovery(Math.Abs(ConnectionId)), Context));
|
||||
var ping = await ReceiveChanel.Reader.ReadAsync();
|
||||
Console.WriteLine($"Ping received {ping.Id}");
|
||||
}
|
||||
|
||||
@@ -19,7 +19,7 @@ namespace mROA.Implementation.Frontend
|
||||
private IContextualSerializationToolKit? _serialization;
|
||||
private ChannelInteractionModule.StreamExtractor _currentExtractor;
|
||||
private CancellationTokenSource _rawExtractorCancellation;
|
||||
|
||||
private IEndPointContext _context;
|
||||
public NetworkFrontendBridge(IPEndPoint serverEndPoint)
|
||||
{
|
||||
_serverEndPoint = serverEndPoint;
|
||||
@@ -36,6 +36,9 @@ namespace mROA.Implementation.Frontend
|
||||
case IContextualSerializationToolKit toolkit:
|
||||
_serialization = toolkit;
|
||||
break;
|
||||
case IEndPointContext endPointContext:
|
||||
_context = endPointContext;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -52,7 +55,7 @@ namespace mROA.Implementation.Frontend
|
||||
_interactionModule.IsConnected = () => _currentExtractor.IsConnected;
|
||||
_interactionModule.OnDisconnected += _ => { Reconnect(); };
|
||||
|
||||
_interactionModule.PostMessageAsync(new NetworkMessageHeader(_serialization, new ClientConnect())).Wait();
|
||||
_interactionModule.PostMessageAsync(new NetworkMessageHeader(_serialization, new ClientConnect(), _context)).Wait();
|
||||
|
||||
_currentExtractor.SingleReceive();
|
||||
var idMessage = _interactionModule.GetNextMessageReceiving(false).GetAwaiter().GetResult();
|
||||
@@ -66,14 +69,14 @@ namespace mROA.Implementation.Frontend
|
||||
|
||||
Task.Run(async () => await _currentExtractor.LoopedReceive(_rawExtractorCancellation.Token));
|
||||
|
||||
var assignment = _serialization.Deserialize<IdAssignment>(idMessage.Data)!;
|
||||
var assignment = _serialization.Deserialize<IdAssignment>(idMessage.Data, _context)!;
|
||||
_interactionModule.ConnectionId = -assignment.Id;
|
||||
TransmissionConfig.OwnershipRepository = new StaticOwnershipRepository(assignment.Id);
|
||||
}
|
||||
|
||||
private void PrepareExtractor()
|
||||
{
|
||||
_currentExtractor = new ChannelInteractionModule.StreamExtractor(_tcpClient.GetStream(), _serialization!);
|
||||
_currentExtractor = new ChannelInteractionModule.StreamExtractor(_tcpClient.GetStream(), _serialization!, _context);
|
||||
|
||||
_ = _currentExtractor.SendFromChannel(_interactionModule!.TrustedPostChanel,
|
||||
_rawExtractorCancellation.Token);
|
||||
@@ -105,7 +108,7 @@ namespace mROA.Implementation.Frontend
|
||||
|
||||
public void Disconnect()
|
||||
{
|
||||
_ = _interactionModule!.PostMessageAsync(new NetworkMessageHeader(_serialization!, new ClientDisconnect()));
|
||||
_ = _interactionModule!.PostMessageAsync(new NetworkMessageHeader(_serialization!, new ClientDisconnect(), _context));
|
||||
_interactionModule.Dispose();
|
||||
_tcpClient.Dispose();
|
||||
}
|
||||
|
||||
@@ -17,7 +17,7 @@ namespace mROA.Implementation.Frontend
|
||||
private IContextRepository? _remoteContextRepository;
|
||||
private IRepresentationModule? _representationModule;
|
||||
private IContextualSerializationToolKit? _serializationToolkit;
|
||||
|
||||
private IEndPointContext _context;
|
||||
public void Inject<T>(T dependency)
|
||||
{
|
||||
switch (dependency)
|
||||
@@ -41,6 +41,9 @@ namespace mROA.Implementation.Frontend
|
||||
case IContextualSerializationToolKit serializationToolkit:
|
||||
_serializationToolkit = serializationToolkit;
|
||||
break;
|
||||
case IEndPointContext remoteContext:
|
||||
_context = remoteContext;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -67,7 +70,7 @@ namespace mROA.Implementation.Frontend
|
||||
|
||||
var query = _representationModule!.GetStream(m =>
|
||||
m.MessageType is EMessageType.CallRequest or EMessageType.CancelRequest
|
||||
or EMessageType.EventRequest or EMessageType.ClientDisconnect, streamTokenSource.Token,
|
||||
or EMessageType.EventRequest or EMessageType.ClientDisconnect, _context, streamTokenSource.Token,
|
||||
m => m.MessageType == EMessageType.CallRequest ? typeof(DefaultCallRequest) : null,
|
||||
m => m.MessageType == EMessageType.CancelRequest ? typeof(CancelRequest) : null,
|
||||
m => m.MessageType == EMessageType.EventRequest ? typeof(DefaultCallRequest) : null,
|
||||
@@ -144,7 +147,7 @@ namespace mROA.Implementation.Frontend
|
||||
return;
|
||||
}
|
||||
|
||||
_representationModule!.PostCallMessage(request.Id, resultType, result, result.GetType());
|
||||
_representationModule!.PostCallMessage(request.Id, resultType, result, _context);
|
||||
}
|
||||
|
||||
private void HandleEventRequest(DefaultCallRequest request)
|
||||
|
||||
@@ -34,10 +34,11 @@ namespace mROA.Implementation
|
||||
MessageType = EMessageType.Unknown;
|
||||
Data = Array.Empty<byte>();
|
||||
}
|
||||
public NetworkMessageHeader(IContextualSerializationToolKit serializationToolkit, INetworkMessage networkMessage)
|
||||
public NetworkMessageHeader(IContextualSerializationToolKit serializationToolkit,
|
||||
INetworkMessage networkMessage, IEndPointContext context)
|
||||
{
|
||||
MessageType = networkMessage.MessageType;
|
||||
Data = serializationToolkit.Serialize(networkMessage);
|
||||
Data = serializationToolkit.Serialize(networkMessage, context);
|
||||
Id = Guid.NewGuid();
|
||||
}
|
||||
public Guid Id { get; set; }
|
||||
|
||||
Reference in New Issue
Block a user