В обычном режиме работает нормально, осталось проверить реконект

This commit is contained in:
2025-03-31 16:48:26 +03:00
parent db110e197c
commit 536e562f49
5 changed files with 32 additions and 27 deletions
@@ -68,18 +68,17 @@ namespace mROA.Implementation.Backend
var client = _tcpListener.AcceptTcpClient(); var client = _tcpListener.AcceptTcpClient();
Console.WriteLine($"Client connected from {client.Client.RemoteEndPoint}"); Console.WriteLine($"Client connected from {client.Client.RemoteEndPoint}");
var interaction = Activator.CreateInstance(_interactionModuleType!) as INextGenerationInteractionModule; var interaction = Activator.CreateInstance(_interactionModuleType!) as INextGenerationInteractionModule;
foreach (var injectableModule in _injectableModules!)
interaction!.Inject(injectableModule);
interaction!.Inject(_serialization);
interaction.BaseStream = client.GetStream();
var connectionRequest = interaction.GetNextMessageReceiving().GetAwaiter().GetResult()!; var connectionRequest = interaction.GetNextMessageReceiving().GetAwaiter().GetResult()!;
if (connectionRequest.MessageType == EMessageType.ClientConnect) if (connectionRequest.MessageType == EMessageType.ClientConnect)
{ {
foreach (var injectableModule in _injectableModules!)
interaction!.Inject(injectableModule);
interaction!.Inject(_serialization);
interaction.BaseStream = client.GetStream();
interaction.PostMessage(new NetworkMessageHeader(_serialization!, interaction.PostMessage(new NetworkMessageHeader(_serialization!,
new IdAssignment { Id = -interaction.ConnectionId })); new IdAssignment { Id = -interaction.ConnectionId }));
_hub!.RegisterInteraction(interaction); _hub!.RegisterInteraction(interaction);
+15
View File
@@ -0,0 +1,15 @@
namespace mROA.Implementation
{
public enum EMessageType
{
Unknown,
FinishedCommandExecution,
ExceptionCommandExecution,
CallRequest,
IdAssigning,
CancelRequest,
EventRequest,
ClientRecovery,
ClientConnect
}
}
@@ -41,7 +41,7 @@ namespace mROA.Implementation.Frontend
_tcpClient.Connect(_ipEndPoint); _tcpClient.Connect(_ipEndPoint);
_interactionModule.BaseStream = _tcpClient.GetStream(); _interactionModule.BaseStream = _tcpClient.GetStream();
_interactionModule.PostMessage(new NetworkMessageHeader(_serialization, new ClientConnect())).Wait(); _ = _interactionModule.PostMessage(new NetworkMessageHeader(_serialization, new ClientConnect()));
var welcomeMessage = _interactionModule.GetNextMessageReceiving().GetAwaiter().GetResult(); var welcomeMessage = _interactionModule.GetNextMessageReceiving().GetAwaiter().GetResult();
if (welcomeMessage.MessageType != EMessageType.IdAssigning) if (welcomeMessage.MessageType != EMessageType.IdAssigning)
{ {
+10
View File
@@ -0,0 +1,10 @@
using mROA.Implementation.Attributes;
namespace mROA.Implementation
{
public interface INetworkMessage
{
[SerializationIgnore]
public EMessageType MessageType { get; }
}
}
@@ -1,17 +1,11 @@
using System; using System;
using System.Text.Json.Serialization; using System.Text.Json.Serialization;
using mROA.Abstract; using mROA.Abstract;
using mROA.Implementation.Attributes;
// ReSharper disable UnusedMember.Global // ReSharper disable UnusedMember.Global
namespace mROA.Implementation namespace mROA.Implementation
{ {
public interface INetworkMessage
{
[SerializationIgnore]
public EMessageType MessageType { get; }
}
public class NetworkMessageHeader public class NetworkMessageHeader
{ {
public NetworkMessageHeader() public NetworkMessageHeader()
@@ -32,17 +26,4 @@ namespace mROA.Implementation
public byte[] Data { get; set; } public byte[] Data { get; set; }
} }
public enum EMessageType
{
Unknown,
FinishedCommandExecution,
ExceptionCommandExecution,
CallRequest,
IdAssigning,
CancelRequest,
EventRequest,
ClientRecovery,
ClientConnect
}
} }