Add TrackedRequest implementation in DTFluxCoreSubsystem and various Modifications and bugfixes.

This commit is contained in:
2025-07-11 23:45:23 +02:00
parent f1f300a351
commit d92ca63ea4
8 changed files with 199 additions and 142 deletions

View File

@ -444,7 +444,9 @@ bool UDTFluxNetworkSubsystem::TryMatchResponseToQueuedRequest(const FString& Mes
// Utiliser le parsing asynchrone pour les réponses volumineuses
bool bUseAsyncParsing = ShouldUseAsyncParsing(MessageString);
RequestManager->CompleteRequest(FoundRequestId, MessageString, bUseAsyncParsing);
if (RequestManager->CompleteRequest(FoundRequestId, MessageString, bUseAsyncParsing))
{
}
UE_LOG(logDTFluxNetwork, Log, TEXT("Matched response to tracked request %s (async=%s)"),
*FoundRequestId.ToString(), bUseAsyncParsing ? TEXT("true") : TEXT("false"));
@ -521,7 +523,12 @@ void UDTFluxNetworkSubsystem::OnRequestCompleted_Internal(const FDTFluxTrackedRe
CompletedRequest.RawResponseData
);
UE_LOG(logDTFluxNetwork, Log, TEXT("Tracked request completed: %s"), *CompletedRequest.RequestId.ToString());
if (CompletedRequest.ParsedResponse.IsSet())
{
UE_LOG(logDTFluxNetwork, Log, TEXT("Tracked About to process : %s"), *CompletedRequest.RequestId.ToString());
TSharedPtr<FDTFluxServerResponse> Response = CompletedRequest.ParsedResponse.GetValue();
ProcessParsedResponse(Response);
}
}
void UDTFluxNetworkSubsystem::OnRequestFailed_Internal(const FDTFluxTrackedRequest& FailedRequest)
@ -571,7 +578,7 @@ void UDTFluxNetworkSubsystem::ReconnectWs(const FName WsClientId)
void UDTFluxNetworkSubsystem::ParseTeamListResponse(FDTFluxServerResponse& Response)
{
FDTFluxTeamListDefinition TeamListDefinition;
Response.ParseTeamListResponse(TeamListDefinition);
Response.ParseTeamList(TeamListDefinition);
if (Response.GetParsingStatus() == EDTFluxResponseStatus::Success)
{
@ -620,7 +627,7 @@ void UDTFluxNetworkSubsystem::ParseContestRanking(FDTFluxServerResponse& Respons
void UDTFluxNetworkSubsystem::ParseStageRankingResponse(FDTFluxServerResponse& Response)
{
FDTFluxStageRankings StageRankings;
Response.ParseStageRankingResponse(StageRankings);
Response.ParseStageRanking(StageRankings);
if (Response.GetParsingStatus() == EDTFluxResponseStatus::Success)
{
@ -637,7 +644,7 @@ void UDTFluxNetworkSubsystem::ParseStageRankingResponse(FDTFluxServerResponse& R
void UDTFluxNetworkSubsystem::ParseSplitRankingResponse(FDTFluxServerResponse& Response)
{
FDTFluxSplitRankings SplitRankings;
Response.ParseSplitRankingResponse(SplitRankings);
Response.ParseSplitRanking(SplitRankings);
if (Response.GetParsingStatus() == EDTFluxResponseStatus::Success)
{
@ -654,7 +661,7 @@ void UDTFluxNetworkSubsystem::ParseSplitRankingResponse(FDTFluxServerResponse& R
void UDTFluxNetworkSubsystem::ParseStatusUpdateResponse(FDTFluxServerResponse& Response)
{
FDTFluxTeamStatusUpdate StatusUpdate;
Response.ParseStatusUpdateResponse(StatusUpdate);
Response.ParseStatusUpdate(StatusUpdate);
if (Response.GetParsingStatus() == EDTFluxResponseStatus::Success)
{
@ -671,7 +678,7 @@ void UDTFluxNetworkSubsystem::ParseStatusUpdateResponse(FDTFluxServerResponse& R
void UDTFluxNetworkSubsystem::ParseSplitSensorResponse(FDTFluxServerResponse& Response)
{
TArray<FDTFluxSplitSensorInfo> SplitSensorInfos;
Response.ParseSplitSensorResponse(SplitSensorInfos);
Response.ParseSplitSensor(SplitSensorInfos);
if (Response.GetParsingStatus() == EDTFluxResponseStatus::Success)
{
@ -702,7 +709,7 @@ EDTFluxResponseStatus UDTFluxNetworkSubsystem::ProcessPushMessage(FDTFluxServerR
case EDTFluxApiDataType::SplitSensor:
{
TArray<FDTFluxSplitSensorInfo> SplitSensorInfos;
if (Response.ParseSplitSensorResponse(SplitSensorInfos))
if (Response.ParseSplitSensor(SplitSensorInfos))
{
for (const auto& SplitSensorInfo : SplitSensorInfos)
{
@ -715,7 +722,7 @@ EDTFluxResponseStatus UDTFluxNetworkSubsystem::ProcessPushMessage(FDTFluxServerR
case EDTFluxApiDataType::StatusUpdate:
{
FDTFluxTeamStatusUpdate StatusUpdate;
if (Response.ParseStatusUpdateResponse(StatusUpdate))
if (Response.ParseStatusUpdate(StatusUpdate))
{
OnTeamStatusUpdateReceived.ExecuteIfBound(StatusUpdate);
}
@ -725,7 +732,7 @@ EDTFluxResponseStatus UDTFluxNetworkSubsystem::ProcessPushMessage(FDTFluxServerR
case EDTFluxApiDataType::TeamUpdate:
{
FDTFluxTeamListDefinition TeamUpdateList;
if (Response.ParseTeamUpdateResponse(TeamUpdateList))
if (Response.ParseTeamUpdate(TeamUpdateList))
{
OnTeamUpdateReceived.ExecuteIfBound(TeamUpdateList);
}