Removed CachedRequest functionality + Fixed(Tested) PursuitSequence bug

This commit is contained in:
2025-07-12 16:07:37 +02:00
parent a08bcd98a4
commit f1d583926b
8 changed files with 190 additions and 400 deletions

View File

@ -36,8 +36,6 @@ void UDTFluxNetworkSubsystem::Initialize(FSubsystemCollectionBase& Collection)
DefaultConfig.TimeoutSeconds = 5.0f;
DefaultConfig.MaxRetries = 3;
DefaultConfig.RetryBackoffMultiplier = 1.5f;
DefaultConfig.bEnableCache = true;
DefaultConfig.CacheValiditySeconds = 60.0f;
RequestManager->Initialize(DefaultConfig);
@ -143,8 +141,6 @@ FGuid UDTFluxNetworkSubsystem::SendTrackedRequest(
FDTFluxRequestConfig CustomConfig;
CustomConfig.TimeoutSeconds = TimeoutSeconds;
CustomConfig.MaxRetries = MaxRetries;
CustomConfig.bEnableCache = bEnableCache;
CustomConfig.CacheValiditySeconds = 60.0f;
CustomConfig.RetryBackoffMultiplier = 1.5f;
FGuid RequestId = RequestManager->CreateTrackedRequest(RequestType, ContestId, StageId, SplitId, CustomConfig);
@ -154,12 +150,8 @@ FGuid UDTFluxNetworkSubsystem::SendTrackedRequest(
// Récupérer la requête pour l'envoyer
if (const FDTFluxTrackedRequest* Request = RequestManager->GetRequestPtr(RequestId))
{
// Si la requête est déjà en cache, pas besoin d'envoyer
if (Request->State != EDTFluxRequestState::Cached)
{
RequestManager->MarkRequestAsSent(RequestId);
SendQueuedRequest(*Request);
}
RequestManager->MarkRequestAsSent(RequestId);
SendQueuedRequest(*Request);
}
}
@ -174,8 +166,8 @@ FGuid UDTFluxNetworkSubsystem::SendTrackedRequestWithCallbacks(
FOnDTFluxRequestSuccess& OnSuccess,
FOnDTFluxRequestError& OnError,
float TimeoutSeconds,
int32 MaxRetries,
bool bEnableCache)
int32 MaxRetries
)
{
if (!RequestManager.IsValid())
{
@ -186,8 +178,6 @@ FGuid UDTFluxNetworkSubsystem::SendTrackedRequestWithCallbacks(
FDTFluxRequestConfig CustomConfig;
CustomConfig.TimeoutSeconds = TimeoutSeconds;
CustomConfig.MaxRetries = MaxRetries;
CustomConfig.bEnableCache = bEnableCache;
CustomConfig.CacheValiditySeconds = 60.0f;
CustomConfig.RetryBackoffMultiplier = 1.5f;
FGuid RequestId = RequestManager->CreateTrackedRequestWithCallbacks(
@ -197,11 +187,8 @@ FGuid UDTFluxNetworkSubsystem::SendTrackedRequestWithCallbacks(
{
if (const FDTFluxTrackedRequest* Request = RequestManager->GetRequestPtr(RequestId))
{
if (Request->State != EDTFluxRequestState::Cached)
{
RequestManager->MarkRequestAsSent(RequestId);
SendQueuedRequest(*Request);
}
RequestManager->MarkRequestAsSent(RequestId);
SendQueuedRequest(*Request);
}
}
@ -227,7 +214,6 @@ bool UDTFluxNetworkSubsystem::HasRequestReceivedResponse(const FGuid& RequestId)
if (GetTrackedRequest(RequestId, Request))
{
return Request.State == EDTFluxRequestState::Completed ||
Request.State == EDTFluxRequestState::Cached ||
!Request.RawResponseData.IsEmpty();
}
return false;
@ -264,22 +250,19 @@ int32 UDTFluxNetworkSubsystem::GetPendingRequestCount() const
return 0;
}
void UDTFluxNetworkSubsystem::GetRequestStatistics(int32& OutPending, int32& OutCached, int32& OutCompleted,
int32& OutFailed, float& OutHitRate) const
void UDTFluxNetworkSubsystem::GetRequestStatistics(int32& OutPending, int32& OutCompleted,
int32& OutFailed) const
{
if (RequestManager.IsValid())
{
FDTFluxQueuedRequestManager::FRequestStatistics Stats = RequestManager->GetStatistics();
OutPending = Stats.Pending;
OutCached = Stats.Cached;
OutCompleted = Stats.Completed;
OutFailed = Stats.Failed;
OutHitRate = Stats.HitRate;
}
else
{
OutPending = OutCached = OutCompleted = OutFailed = 0;
OutHitRate = 0.0f;
OutPending = OutCompleted = OutFailed = 0;
}
}
@ -362,7 +345,7 @@ void UDTFluxNetworkSubsystem::RegisterWebSocketEvents()
&UDTFluxNetworkSubsystem::OnWebSocketMessageSentEvent_Subsystem);
}
void UDTFluxNetworkSubsystem::UnregisterWebSocketEvents()
void UDTFluxNetworkSubsystem::UnregisterWebSocketEvents() const
{
if (!WsClient.IsValid()) return;
@ -794,11 +777,10 @@ void UDTFluxNetworkSubsystem::SendQueuedRequest(const FDTFluxTrackedRequest& Que
bool UDTFluxNetworkSubsystem::ShouldUseAsyncParsing(const FString& JsonData) const
{
// Critères pour décider du parsing asynchrone :
// Critère pour décider du parsing asynchrone :
// - Taille des données (> 1KB par défaut)
// - Charge actuelle du système
// - Type de données (certains types sont plus complexes à parser)
// Pour le moment uniquement taille
const int32 AsyncThreshold = 1024; // 1KB
constexpr int32 AsyncThreshold = 1024; // 1KB
return JsonData.Len() > AsyncThreshold;
}