From f7f70446d8a8317c230a5216db7edd0ea7be37f4 Mon Sep 17 00:00:00 2001 From: Ange-Marie MAURIN Date: Fri, 11 Jul 2025 00:47:51 +0200 Subject: [PATCH] Fix Event Pursuit --- .../Subsystems/DTFluxNetworkSubsystem.cpp | 5 +--- .../Subsystems/DTFluxNetworkSubsystem.h | 23 ++++++++++--------- 2 files changed, 13 insertions(+), 15 deletions(-) diff --git a/Source/DTFluxNetwork/Private/Subsystems/DTFluxNetworkSubsystem.cpp b/Source/DTFluxNetwork/Private/Subsystems/DTFluxNetworkSubsystem.cpp index 22ee501..eec785d 100644 --- a/Source/DTFluxNetwork/Private/Subsystems/DTFluxNetworkSubsystem.cpp +++ b/Source/DTFluxNetwork/Private/Subsystems/DTFluxNetworkSubsystem.cpp @@ -104,7 +104,6 @@ FGuid UDTFluxNetworkSubsystem::SendTrackedRequestWithCallback( PendingErrorCallbacks.Add(RequestId, OnError.GetValue()); } } - return RequestId; } @@ -592,8 +591,6 @@ void UDTFluxNetworkSubsystem::Parse(FDTFluxServerResponse& Response) void UDTFluxNetworkSubsystem::OnWebSocketMessageEvent_Subsystem(const FString& MessageString) { - // UE_LOG(logDTFluxNetwork, Warning, TEXT("Client %s :\nMessage Received : %s"), *WsClient->GetAddress(), *MessageString); - //Do Something With the message EDTFluxResponseStatus ResponseStatus; FDTFluxServerResponse Response(MessageString, ResponseStatus); if (!TryMatchResponseToQueuedRequest(Response)) @@ -680,6 +677,7 @@ bool UDTFluxNetworkSubsystem::TryMatchResponseToQueuedRequest(FDTFluxServerRespo TEXT("Matched response to queued request: Type=%s, Contest=%d, Stage=%d, Split=%d"), *UEnum::GetValueAsString(Response.GetResponseType()), Response.ContestID, Response.StageID, Response.SplitID); + if (PendingCallbacks.Contains(FoundRequestId)) { FOnDTFluxTrackedRequestResponse* SuccessCallback = PendingCallbacks.Find(FoundRequestId); @@ -689,7 +687,6 @@ bool UDTFluxNetworkSubsystem::TryMatchResponseToQueuedRequest(FDTFluxServerRespo } return QueueManager->MarkRequestAsResponded(FoundRequestId); } - return false; } diff --git a/Source/DTFluxNetwork/Public/Subsystems/DTFluxNetworkSubsystem.h b/Source/DTFluxNetwork/Public/Subsystems/DTFluxNetworkSubsystem.h index 3752f58..ce0a3de 100644 --- a/Source/DTFluxNetwork/Public/Subsystems/DTFluxNetworkSubsystem.h +++ b/Source/DTFluxNetwork/Public/Subsystems/DTFluxNetworkSubsystem.h @@ -128,14 +128,14 @@ public: // === REQUÊTES AVEC QUEUE ET TRACKING === UFUNCTION(BlueprintCallable, Category="DTFlux|Tracked Requests") FGuid SendTrackedRequest(EDTFluxApiDataType RequestType, int32 ContestId = -1, int32 StageId = -1, - int32 SplitId = -1, float TimeoutSeconds = 30.0f); + int32 SplitId = -1, float TimeoutSeconds = 5.0f); FGuid SendTrackedRequestWithCallback(EDTFluxApiDataType RequestType, int32 ContestId, int32 StageId, int32 SplitId, FOnDTFluxTrackedRequestResponse OnCompleted, FOnDTFluxTrackedRequestTimeout OnTimeout, TOptional OnError = TOptional< FOnDTFluxRequestResponseError>(), - float TimeoutSeconds = 30.0f); + float TimeoutSeconds = 5.0f); UFUNCTION(BlueprintCallable, Category="DTFlux|Tracked Requests") bool GetTrackedRequest(const FGuid& RequestId, FDTFluxQueuedRequest& OutRequest) const; @@ -192,28 +192,30 @@ private: // === MÉTHODES DE CONFIGURATION === UFUNCTION() void WsSettingsChanged(const FDTFluxWsSettings& NewWsSettings); + void ReconnectWs(const FName WsClientId); + UFUNCTION() void HttpSettingsChanged(const FDTFluxHttpSettings& NewHttpSettings); - void ReconnectWs(const FName WsClientId); void ReconnectHttp(const FName WsClientId); + // === GESTION DES ÉVÉNEMENTS HTTP === + void RegisterHttpEvents(); + void UnregisterHttpEvents(); + // === GESTION DES ÉVÉNEMENTS WEBSOCKET === void RegisterWebSocketEvents(); void UnregisterWebSocketEvents(); - void OnWebSocketConnected_Subsystem(); void OnWebSocketConnectionError_Subsystem(const FString& Error); void OnWebSocketClosedEvent_Subsystem(int32 StatusCode, const FString& Reason, bool bWasClean); - + void OnWebSocketMessageEvent_Subsystem(const FString& MessageString); + void OnWebSocketMessageSentEvent_Subsystem(const FString& MessageSent); FDelegateHandle OnWsConnectedEventDelegateHandle; FDelegateHandle OnWsConnectionErrorEventDelegateHandle; FDelegateHandle OnWsClosedEventDelegateHandle; FDelegateHandle OnWsMessageEventDelegateHandle; FDelegateHandle OnWsMessageSentEventDelegateHandle; - // === GESTION DES ÉVÉNEMENTS HTTP === - void RegisterHttpEvents(); - void UnregisterHttpEvents(); // === PARSING DES RÉPONSES === void ParseTeamListResponse(FDTFluxServerResponse& ServerResponse); @@ -224,10 +226,9 @@ private: void ParseStatusUpdateResponse(FDTFluxServerResponse& Response); void ParseSplitSensorResponse(FDTFluxServerResponse& Response); EDTFluxResponseStatus ProcessPushMessage(FDTFluxServerResponse& Response); - void Parse(FDTFluxServerResponse& Response); - void OnWebSocketMessageEvent_Subsystem(const FString& MessageString); - void OnWebSocketMessageSentEvent_Subsystem(const FString& MessageSent); + + bool CleanRequestCallbacks(const FGuid& RequestId); // === GESTION DES REQUÊTES TRACKÉES ===