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