5#include "Containers/Array.h"
6#include "Containers/Set.h"
14#include "Misc/Optional.h"
33 template <
typename IntrinsicType>
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
UE::FPlatformRecursiveMutex FCriticalSection
Definition CriticalSection.h:53
auto Response
Definition ExternalRpcRegistry.cpp:598
UE_INTRINSIC_CAST UE_REWRITE constexpr std::remove_reference_t< T > && MoveTemp(T &&Obj) noexcept
Definition UnrealTemplate.h:520
Definition HttpRequestAdapter.h:14
TSharedRef< IHttpRequest > HttpRequest
Definition HttpRequestAdapter.h:58
Definition HttpRetrySystem.h:230
FCriticalSection NumRetriedRequestsLock
Definition HttpRetrySystem.h:248
void IncrementRetriedRequests()
Definition HttpRetrySystem.cpp:713
ELogVerbosity::Type TargetVerbosity
Definition HttpRetrySystem.h:252
FHttpLogVerbosityTracker()
Definition HttpRetrySystem.cpp:702
ELogVerbosity::Type OriginalVerbosity
Definition HttpRetrySystem.h:250
static FHttpLogVerbosityTracker & Get()
Definition HttpRetrySystem.cpp:696
~FHttpLogVerbosityTracker()
Definition HttpRetrySystem.cpp:708
void OnConfigSectionsChanged(const FString &IniFilename, const TSet< FString > &SectionName)
Definition HttpRetrySystem.cpp:761
void DecrementRetriedRequests()
Definition HttpRetrySystem.cpp:732
void UpdateSettingsFromConfig()
Definition HttpRetrySystem.cpp:748
int32 NumRetriedRequests
Definition HttpRetrySystem.h:246
Definition HttpRetrySystem.h:183
void RetryHttpRequest(FHttpRetryRequestEntry &RequestEntry)
Definition HttpRetrySystem.cpp:465
bool ProcessRequest(TSharedRef< FRequest, ESPMode::ThreadSafe > &HttpRequest)
Definition HttpRetrySystem.cpp:616
bool CanRetryForConnectionError(const FHttpRetryRequestEntry &HttpRetryRequestEntry) const
Definition HttpRetrySystem.cpp:415
void RetryHttpRequestWithDelay(FManager::FHttpRetryRequestEntry &RequestEntry, float InDelay, bool bWasSucceeded)
Definition HttpRetrySystem.cpp:507
void CancelRequest(TSharedRef< FRequest, ESPMode::ThreadSafe > &HttpRequest)
Definition HttpRetrySystem.cpp:638
FRetryTimeoutRelativeSecondsSetting RetryTimeoutRelativeSecondsDefault
Definition HttpRetrySystem.h:295
void HttpRequestTimeoutAfterDelay(FManager::FHttpRetryRequestEntry &RequestEntry, bool bWasSucceeded, float Delay)
Definition HttpRetrySystem.cpp:545
bool CanRetry(const FHttpRetryRequestEntry &HttpRetryRequestEntry) const
Definition HttpRetrySystem.cpp:427
bool ShouldRetry(const FHttpRetryRequestEntry &HttpRetryRequestEntry) const
Definition HttpRetrySystem.cpp:372
bool HasTimedOut(const FHttpRetryRequestEntry &HttpRetryRequestEntry, const double NowAbsoluteSeconds)
Definition HttpRetrySystem.cpp:437
void SetRandomFailureRate(float Value)
Definition HttpRetrySystem.h:207
bool CanRetryInGeneral(const FHttpRetryRequestEntry &HttpRetryRequestEntry) const
Definition HttpRetrySystem.cpp:421
bool RetryLimitForConnectionErrorIsSet(const FHttpRetryRequestEntry &HttpRetryRequestEntry) const
Definition HttpRetrySystem.cpp:410
FRandomFailureRateSetting RandomFailureRate
Definition HttpRetrySystem.h:292
HTTP_API void BlockUntilFlushed(float TimeoutSec)
Definition HttpRetrySystem.cpp:674
TArray< FHttpRetryRequestEntry > RequestList
Definition HttpRetrySystem.h:297
float GetLockoutPeriodSeconds(const FHttpRetryRequestEntry &HttpRetryRequestEntry)
Definition HttpRetrySystem.cpp:581
void SetDefaultRetryLimit(uint32 Value)
Definition HttpRetrySystem.h:208
HTTP_API TSharedRef< class FHttpRetrySystem::FRequest, ESPMode::ThreadSafe > CreateRequest(const FRetryLimitCountSetting &InRetryLimitCountOverride=FRetryLimitCountSetting(), const FRetryTimeoutRelativeSecondsSetting &InRetryTimeoutRelativeSecondsOverride=FRetryTimeoutRelativeSecondsSetting(), const FRetryResponseCodes &InRetryResponseCodes=FRetryResponseCodes(), const FRetryVerbs &InRetryVerbs=FRetryVerbs(), const FRetryDomainsPtr &InRetryDomains=FRetryDomainsPtr(), const FRetryLimitCountSetting &InRetryLimitCountForConnectionErrorOverride=FRetryLimitCountSetting(), const FExponentialBackoffCurve &InExponentialBackoffCurve=FExponentialBackoffCurve())
Definition HttpRetrySystem.cpp:349
FCriticalSection RequestListLock
Definition HttpRetrySystem.h:298
FRetryLimitCountSetting RetryLimitCountDefault
Definition HttpRetrySystem.h:293
virtual HTTP_API ~FManager()
Definition HttpRetrySystem.cpp:335
FRetryLimitCountSetting RetryLimitCountForConnectionErrorDefault
Definition HttpRetrySystem.h:294
Definition HttpRetrySystem.h:103
FExponentialBackoffCurve RetryExponentialBackoffCurve
Definition HttpRetrySystem.h:173
bool bBoundAdaptorDelegates
Definition HttpRetrySystem.h:175
FRetryLimitCountSetting RetryLimitCountForConnectionErrorOverride
Definition HttpRetrySystem.h:157
TWeakPtr< FManager > RetryManager
Definition HttpRetrySystem.h:167
EStatus::Type RetryStatus
Definition HttpRetrySystem.h:154
FRetryDomainsPtr RetryDomains
Definition HttpRetrySystem.h:161
void HttpOnStatusCodeReceived(FHttpRequestPtr Request, int32 StatusCode)
Definition HttpRetrySystem.cpp:310
FString OriginalUrl
Definition HttpRetrySystem.h:165
virtual HTTP_API bool ProcessRequest() override
Definition HttpRetrySystem.cpp:137
void HttpOnRequestProgress(FHttpRequestPtr InHttpRequest, uint64 BytesSent, uint64 BytesRcv)
Definition HttpRetrySystem.cpp:216
FRetryLimitCountSetting RetryLimitCountOverride
Definition HttpRetrySystem.h:156
void SetUrlFromRetryDomains()
Definition HttpRetrySystem.cpp:178
void BindAdaptorDelegates()
Definition HttpRetrySystem.cpp:123
FHttpResponsePtr LastResponse
Definition HttpRetrySystem.h:169
void HttpOnHeaderReceived(FHttpRequestPtr Request, const FString &HeaderName, const FString &NewHeaderValue)
Definition HttpRetrySystem.cpp:316
bool bLastSucceeded
Definition HttpRetrySystem.h:170
FRetryVerbs RetryVerbs
Definition HttpRetrySystem.h:160
FRetryResponseCodes RetryResponseCodes
Definition HttpRetrySystem.h:159
int32 RetryDomainsIndex
Definition HttpRetrySystem.h:163
virtual HTTP_API void CancelRequest() override
Definition HttpRetrySystem.cpp:200
EStatus::Type GetRetryStatus() const
Definition HttpRetrySystem.h:125
void MoveToNextRetryDomain()
Definition HttpRetrySystem.cpp:189
void HttpOnProcessRequestComplete(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse, bool bSucceeded)
Definition HttpRetrySystem.cpp:221
HTTP_API FRequest(TSharedRef< FManager > InManager, const TSharedRef< IHttpRequest > &HttpRequest, const FRetryLimitCountSetting &InRetryLimitCountOverride=FRetryLimitCountSetting(), const FRetryTimeoutRelativeSecondsSetting &InRetryTimeoutRelativeSecondsOverride=FRetryTimeoutRelativeSecondsSetting(), const FRetryResponseCodes &InRetryResponseCodes=FRetryResponseCodes(), const FRetryVerbs &InRetryVerbs=FRetryVerbs(), const FRetryDomainsPtr &InRetryDomains=FRetryDomainsPtr(), const FRetryLimitCountSetting &InRetryLimitCountForConnectionErrorOverride=FRetryLimitCountSetting(), const FExponentialBackoffCurve &InExponentialBackoffCurve=FExponentialBackoffCurve())
FRetryTimeoutRelativeSecondsSetting RetryTimeoutRelativeSecondsOverride
Definition HttpRetrySystem.h:158
Definition SharedPointer.h:1640
Definition SharedPointer.h:692
Definition SharedPointer.h:153
Definition SharedPointer.h:1295
Type
Definition LogVerbosity.h:17
@ NoLogging
Definition LogVerbosity.h:19
@ Error
Definition LogVerbosity.h:28
Definition HttpRetrySystem.cpp:22
TOptional< RetryTimeoutRelativeSecondsType > FRetryTimeoutRelativeSecondsSetting
Definition HttpFwd.h:25
RetryTimeoutRelativeSecondsType TZero< RetryTimeoutRelativeSecondsType >()
Definition HttpRetrySystem.h:38
RetryTimeoutRelativeSecondsType RetryTimeoutRelativeSeconds(double Value)
Definition HttpRetrySystem.h:31
RetryLimitCountType TZero< RetryLimitCountType >()
Definition HttpRetrySystem.h:37
TOptional< RetryLimitCountType > FRetryLimitCountSetting
Definition HttpFwd.h:24
RetryLimitCountType RetryLimitCount(uint32 Value)
Definition HttpRetrySystem.h:30
TOptional< float > FRandomFailureRateSetting
Definition HttpFwd.h:23
float TZero< float >()
Definition HttpRetrySystem.h:36
double RetryTimeoutRelativeSecondsType
Definition HttpFwd.h:21
TOptional< double > ReadThrottledTimeFromResponseInSeconds(FHttpResponsePtr Response)
Definition HttpRetrySystem.cpp:24
TSet< FName > FRetryVerbs
Definition HttpFwd.h:27
TSharedPtr< FRetryDomains, ESPMode::ThreadSafe > FRetryDomainsPtr
Definition HttpFwd.h:30
uint32 RetryLimitCountType
Definition HttpFwd.h:20
TSet< int32 > FRetryResponseCodes
Definition HttpFwd.h:26
Definition HttpRetrySystem.h:71
float MinCoefficient
Definition HttpRetrySystem.h:77
float ExponentBias
Definition HttpRetrySystem.h:75
float Base
Definition HttpRetrySystem.h:73
float MaxCoefficient
Definition HttpRetrySystem.h:79
HTTP_API bool IsValid() const
Definition HttpRetrySystem.cpp:64
float MaxBackoffSeconds
Definition HttpRetrySystem.h:81
Definition HttpRetrySystem.h:217
bool bShouldCancel
Definition HttpRetrySystem.h:220
uint32 CurrentRetryCountForConnectionError
Definition HttpRetrySystem.h:222
double RequestStartTimeAbsoluteSeconds
Definition HttpRetrySystem.h:223
uint32 CurrentRetryCount
Definition HttpRetrySystem.h:221
double LockoutEndTimeAbsoluteSeconds
Definition HttpRetrySystem.h:224
TSharedRef< FRequest, ESPMode::ThreadSafe > Request
Definition HttpRetrySystem.h:226
Definition HttpRetrySystem.h:106
Type
Definition HttpRetrySystem.h:108
@ Succeeded
Definition HttpRetrySystem.h:115
@ Processing
Definition HttpRetrySystem.h:110
@ Cancelled
Definition HttpRetrySystem.h:112
@ FailedTimeout
Definition HttpRetrySystem.h:114
@ FailedRetry
Definition HttpRetrySystem.h:113
@ ProcessingLockout
Definition HttpRetrySystem.h:111
@ NotStarted
Definition HttpRetrySystem.h:109
Definition HttpRetrySystem.h:47
TAtomic< int32 > ActiveIndex
Definition HttpRetrySystem.h:59
TArray< FString > Domains
Definition HttpRetrySystem.h:54
FRetryDomains(TArray< FString > &&InDomains)
Definition HttpRetrySystem.h:48
Definition Optional.h:131