2025-01-27 12:56:07 +03:00
|
|
|
using System.Text;
|
2025-01-15 10:14:21 +03:00
|
|
|
using System.Text.Json;
|
|
|
|
|
|
|
|
|
|
namespace mROA.Implementation;
|
|
|
|
|
|
2025-01-27 12:56:07 +03:00
|
|
|
public class JsonFrontendSerialisationModule(IInteractionModule.IFrontendInteractionModule interactionModule)
|
|
|
|
|
: ISerialisationModule.IFrontendSerialisationModule
|
2025-01-15 10:14:21 +03:00
|
|
|
{
|
2025-02-03 10:42:47 +03:00
|
|
|
public async Task<T> GetNextCommandExecution<T>(Guid requestId) where T : ICommandExecution
|
2025-01-15 10:14:21 +03:00
|
|
|
{
|
2025-02-03 10:42:47 +03:00
|
|
|
var receiveMessage = await interactionModule.ReceiveMessage();
|
2025-01-27 12:56:07 +03:00
|
|
|
var parsed = JsonSerializer.Deserialize<T>(receiveMessage);
|
2025-02-01 13:40:06 +03:00
|
|
|
while (parsed.CallRequestId != requestId)
|
|
|
|
|
{
|
2025-02-03 10:42:47 +03:00
|
|
|
receiveMessage = await interactionModule.ReceiveMessage();
|
2025-02-01 13:40:06 +03:00
|
|
|
parsed = JsonSerializer.Deserialize<T>(receiveMessage);
|
|
|
|
|
}
|
2025-01-27 12:56:07 +03:00
|
|
|
return parsed;
|
2025-01-15 10:14:21 +03:00
|
|
|
}
|
2025-01-25 20:42:21 +03:00
|
|
|
|
2025-01-15 10:14:21 +03:00
|
|
|
public void PostCallRequest(ICallRequest callRequest)
|
|
|
|
|
{
|
2025-01-27 12:56:07 +03:00
|
|
|
var post = JsonSerializer.Serialize(callRequest, callRequest.GetType());
|
|
|
|
|
interactionModule.PostMessage(Encoding.UTF8.GetBytes(post));
|
2025-01-15 10:14:21 +03:00
|
|
|
}
|
|
|
|
|
}
|