using System.Text.Json; using mROA.Implementation; namespace mROA.Example; public class TestControllerRemoteEndpoint(int id, ISerialisationModule.IFrontendSerialisationModule serialisationModule) : ITestController, IRemoteObject { public void A() { serialisationModule.PostCallRequest(new JsonCallRequest { CommandId = 0, ObjectId = id }); } public async Task AAsync(CancellationToken cancellationToken) { var request = new JsonCallRequest { CommandId = 1, ObjectId = id }; serialisationModule.PostCallRequest(request); await serialisationModule.GetNextCommandExecution(request.CallRequestId); } public int B() { TransmissionConfig.SetupBackendRepository(); var request = new JsonCallRequest { CommandId = 2, ObjectId = id }; serialisationModule.PostCallRequest(request); var response = serialisationModule.GetNextCommandExecution(request.CallRequestId) .GetAwaiter().GetResult(); TransmissionConfig.SetupFrontendRepository(); var convertation = response.Result! is JsonElement e ? e.Deserialize() : (int)response.Result!; return convertation; } public async Task BAsync(CancellationToken cancellationToken) { TransmissionConfig.SetupBackendRepository(); var request = new JsonCallRequest { CommandId = 3, ObjectId = id }; serialisationModule.PostCallRequest(request); var response = await serialisationModule.GetNextCommandExecution(request.CallRequestId); TransmissionConfig.SetupFrontendRepository(); var convertation = response.Result! is JsonElement e ? e.Deserialize() : (int)response.Result!; return convertation; } public TransmittedSharedObject SharedObjectTransmitionTest() { TransmissionConfig.SetupBackendRepository(); var request = new JsonCallRequest { CommandId = 4, ObjectId = id }; serialisationModule.PostCallRequest(request); var response = serialisationModule.GetNextCommandExecution(request.CallRequestId) .GetAwaiter().GetResult(); TransmissionConfig.SetupFrontendRepository(); var convertation = response.Result! is JsonElement e ? e.Deserialize>()! : (TransmittedSharedObject)response.Result!; return convertation; } public int Parametrized(TestParameter parameter) { var request = new JsonCallRequest { CommandId = 5, ObjectId = id, Parameter = parameter }; TransmissionConfig.SetupBackendRepository(); serialisationModule.PostCallRequest(request); var response = serialisationModule.GetNextCommandExecution(request.CallRequestId) .GetAwaiter().GetResult(); TransmissionConfig.SetupFrontendRepository(); var convertation = response.Result! is JsonElement e ? e.Deserialize() : (int)response.Result!; return convertation; } public TransmittedSharedObject GetTestParameter() { TransmissionConfig.SetupBackendRepository(); var request = new JsonCallRequest { CommandId = 6, ObjectId = id }; serialisationModule.PostCallRequest(request); var response = serialisationModule.GetNextCommandExecution(request.CallRequestId) .GetAwaiter().GetResult(); TransmissionConfig.SetupFrontendRepository(); var convertation = response.Result! is JsonElement e ? e.Deserialize>() : (TransmittedSharedObject)response.Result!; return convertation; } public int Id => id; }