UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
HttpManager.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "Containers/Array.h"
6#include "Containers/Map.h"
7#include "Containers/Queue.h"
8#include "Containers/Ticker.h"
9#include "Containers/Ticker.h"
12#include "CoreMinimal.h"
13#include "CoreTypes.h"
14#include "HAL/CriticalSection.h"
15#include "HttpPackage.h"
17#include "Misc/EnumRange.h"
19#include "Templates/Function.h"
21
22class FHttpThreadBase;
24class FOutputDevice;
26
28{
30 Default,
35 Count
36};
39
45
51
58
65
67{
68 // Use atomic for the following fields because csv profiler reads them from game thread while
69 // http thread record them from http thread
70
72 std::atomic<int32> RequestsInQueue = 0;
74 std::atomic<int32> RequestsInFlight = 0;
76 std::atomic<float> MaxTimeToConnect = -1.0f;
78 std::atomic<uint32> MaxRequestsInQueue = 0;
80 std::atomic<uint32> MaxRequestsInFlight = 0;
82 std::atomic<float> MaxTimeToWaitInQueue = 0.0f;
84 std::atomic<int64> TotalDownloadedBytes = 0;
86 std::atomic<int64> BandwidthMbps = 0;
88 std::atomic<int64> HttpDurationMsAvg = 0;
91
93 {
94 }
95
109};
110
115 : public FTSTickerObjectBase
116{
117public:
118
119 // FHttpManager
120
125
129 HTTP_API virtual ~FHttpManager();
130
134 HTTP_API void Initialize();
135
139 HTTP_API void Shutdown();
140
147
154
161 HTTP_API void RemoveRequest(const FHttpRequestRef& Request);
162
171
178
186 HTTP_API bool Tick(float DeltaSeconds) override;
187
193 HTTP_API virtual void FlushTick(float DeltaSeconds);
194
201
208
214 HTTP_API void DumpRequests(FOutputDevice& Ar) const;
215
221 HTTP_API virtual bool SupportsDynamicProxy() const;
222
231
237 HTTP_API FString CreateCorrelationId() const;
238
246 HTTP_API bool IsDomainAllowed(const FString& Url) const;
247
254
258 HTTP_API virtual void OnBeforeFork();
259
263 HTTP_API virtual void OnAfterFork();
264
268 HTTP_API virtual void OnEndFramePostFork();
269
270
274 HTTP_API virtual void UpdateConfigs();
275
281 HTTP_API void AddGameThreadTask(TFunction<void()>&& Task, float Delay = 0.0f);
282
291
298
305
307
308protected:
315
317
318 HTTP_API bool HasAnyBoundDelegate() const;
319
323
324protected:
327
329
332
336
337 // This variable is set to true in Flush(EHttpFlushReason), and prevents new Http requests from being launched
339
342
345
348
372
374
389
390 bool bUseEventLoop = true;
391
394
397
398#if !UE_BUILD_SHIPPING
401#endif
402
404 struct FMockResponse
405 {
406 int32 StatusCode = 0;
409 };
410
412 {
413 FString Str;
414 FString Verb;
415 };
416
419
422
429
434
437
439 HTTP_API void RecordStatRequestsInFlight(uint32 RequestsInFlight);
440
442 HTTP_API void RecordStatRequestsInQueue(uint32 RequestsInQueue);
443
446
448 HTTP_API void RecordPlatformStats(const FHttpStatsPlatform& PlatformStats);
449
450 HTTP_API bool ShouldLogResponse(FStringView Url) const;
452
454
457
463 HTTP_API void AddRequest(const FHttpRequestRef& Request);
464
465protected:
468};
#define PACKAGE_SCOPE
Definition CoreOnlinePackage.h:9
FPlatformTypes::TCHAR TCHAR
Either ANSICHAR or WIDECHAR, depending on whether the platform supports wide characters or the requir...
Definition Platform.h:1135
FPlatformTypes::int64 int64
A 64-bit signed integer.
Definition Platform.h:1127
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
FPlatformTypes::uint64 uint64
A 64-bit unsigned integer.
Definition Platform.h:1117
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
UE::FPlatformRecursiveMutex FCriticalSection
Definition CriticalSection.h:53
#define DECLARE_DELEGATE_OneParam(DelegateName, Param1Type)
Definition DelegateCombinations.h:48
#define ENUM_RANGE_BY_COUNT(EnumType, Count)
Definition EnumRange.h:25
EHttpFlushReason
Definition HttpManager.h:28
const TCHAR * LexToString(const EHttpFlushReason &FlushReason)
Definition HttpManager.cpp:58
uint8_t uint8
Definition binka_ue_file_header.h:8
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition HttpManager.h:116
HTTP_API void RecordPlatformStats(const FHttpStatsPlatform &PlatformStats)
Definition HttpManager.cpp:700
TMap< EHttpFlushReason, FHttpFlushTimeLimit > FlushTimeLimitsMap
Definition HttpManager.h:373
FTSTicker GameThreadTicker
Definition HttpManager.h:334
HTTP_API void Shutdown()
Definition HttpManager.cpp:134
FHttpStatsHistory HttpStatsHistory
Definition HttpManager.h:388
HTTP_API void ReloadFlushTimeLimits()
Definition HttpManager.cpp:191
virtual HTTP_API void OnBeforeFork()
Definition HttpManager.cpp:310
virtual HTTP_API FHttpThreadBase * CreateHttpThread()
Definition HttpManager.cpp:361
virtual HTTP_API void UpdateConfigs()
Definition HttpManager.cpp:326
HTTP_API void RemoveHttpThreadTask(TSharedPtr< IHttpTaskTimerHandle > HttpTaskTimerHandle)
Definition HttpManager.cpp:355
HTTP_API void UpdateUrlPatternsToMockResponse(IConsoleVariable *CVar)
Definition HttpManager.cpp:747
virtual HTTP_API void OnAfterFork()
Definition HttpManager.cpp:315
TArray< FString > UrlPatternsToLogResponse
Definition HttpManager.h:392
FCriticalSection GameThreadTickerLock
Definition HttpManager.h:335
HTTP_API bool HasAnyBoundDelegate() const
Definition HttpManager.cpp:165
HTTP_API bool IsCurrentThreadCompletingRequest() const
Definition HttpManager.cpp:842
HTTP_API void SetCorrelationIdMethod(TFunction< FString()> InCorrelationIdMethod)
Definition HttpManager.cpp:243
HTTP_API FString CreateCorrelationId() const
Definition HttpManager.cpp:249
FCriticalSection UrlPatternsToMockResponseCriticalSection
Definition HttpManager.h:467
HTTP_API void RemoveRequest(const FHttpRequestRef &Request)
Definition HttpManager.cpp:578
FHttpManagerRequestCompletedDelegate RequestCompletedDelegate
Definition HttpManager.h:344
virtual HTTP_API ~FHttpManager()
Definition HttpManager.cpp:98
HTTP_API void CancelThreadedRequest(const TSharedRef< FHttpRequestCommon, ESPMode::ThreadSafe > &Request)
Definition HttpManager.cpp:594
TMap< uint32, bool > ThreadsCompletingRequest
Definition HttpManager.h:400
HTTP_API void MarkCurrentThreadCompletingRequest(bool bCompleting)
Definition HttpManager.cpp:833
TMap< FString, FString > ResponseHeaders
Definition HttpManager.h:408
TArray< FString > UrlPatternsToDisableFailedLog
Definition HttpManager.h:395
FHttpThreadBase * Thread
Definition HttpManager.h:328
bool bUseEventLoop
Definition HttpManager.h:390
HTTP_API TSharedPtr< IHttpTaskTimerHandle > AddHttpThreadTask(TFunction< void()> &&Task, float InDelay=0.0f)
Definition HttpManager.cpp:349
FHttpManagerRequestAddedDelegate RequestAddedDelegate
Definition HttpManager.h:341
HTTP_API void AddRequest(const FHttpRequestRef &Request)
Definition HttpManager.cpp:566
static HTTP_API TFunction< FString()> GetDefaultCorrelationIdMethod()
Definition HttpManager.cpp:305
HTTP_API TOptional< FMockResponse > GetMockResponse(FStringView Url, FStringView Verb) const
Definition HttpManager.cpp:815
FCriticalSection CompletedRequestLock
Definition HttpManager.h:421
HTTP_API void RecordStatRequestsInQueue(uint32 RequestsInQueue)
Definition HttpManager.cpp:689
HTTP_API void UpdateUrlPatternsToDisableFailedLog(IConsoleVariable *CVar)
Definition HttpManager.cpp:726
HTTP_API void AddThreadedRequest(const TSharedRef< FHttpRequestCommon, ESPMode::ThreadSafe > &Request)
Definition HttpManager.cpp:585
HTTP_API void SetRequestAddedDelegate(const FHttpManagerRequestAddedDelegate &Delegate)
Definition HttpManager.cpp:617
FHttpStats HttpStats
Definition HttpManager.h:375
HTTP_API void AddGameThreadTask(TFunction< void()> &&Task, float Delay=0.0f)
Definition HttpManager.cpp:338
UE::Core::FURLRequestFilter URLRequestFilter
Definition HttpManager.h:347
HTTP_API void SetRequestCompletedDelegate(const FHttpManagerRequestCompletedDelegate &Delegate)
Definition HttpManager.cpp:622
FCriticalSection ThreadsCompletingRequestCriticalSection
Definition HttpManager.h:399
HTTP_API void BroadcastHttpRequestCompleted(const FHttpRequestRef &Request)
Definition HttpManager.cpp:644
FHttpStats GetHttpStats() const
Definition HttpManager.h:306
HTTP_API void RecordStatTimeToConnect(float Duration)
Definition HttpManager.cpp:678
TArray< TPair< FUrlToMatch, FMockResponse > > UrlPatternsToMockResponse
Definition HttpManager.h:466
virtual HTTP_API void OnEndFramePostFork()
Definition HttpManager.cpp:320
HTTP_API bool IsValidRequest(const IHttpRequest *RequestPtr) const
Definition HttpManager.cpp:600
TFunction< FString()> CorrelationIdMethod
Definition HttpManager.h:331
TArray< FHttpRequestRef > Requests
Definition HttpManager.h:326
FCriticalSection UrlPatternsToLogResponseCriticalSection
Definition HttpManager.h:393
void SetURLRequestFilter(const UE::Core::FURLRequestFilter &InURLRequestFilter)
Definition HttpManager.h:304
bool bFlushing
Definition HttpManager.h:338
virtual HTTP_API void FlushTick(float DeltaSeconds)
Definition HttpManager.cpp:561
HTTP_API FHttpManager()
Definition HttpManager.cpp:90
HTTP_API void UpdateUrlPatternsToLogResponse(IConsoleVariable *CVar)
Definition HttpManager.cpp:705
HTTP_API void RecordStatRequestsInFlight(uint32 RequestsInFlight)
Definition HttpManager.cpp:683
HTTP_API FHttpThreadBase * GetThread()
Definition HttpManager.cpp:673
HTTP_API void Initialize()
Definition HttpManager.cpp:108
HTTP_API void RecordMaxTimeToWaitInQueue(float Duration)
Definition HttpManager.cpp:695
FUtf8String ResponsePayload
Definition HttpManager.h:407
FCriticalSection RequestLock
Definition HttpManager.h:418
HTTP_API void DumpRequests(FOutputDevice &Ar) const
Definition HttpManager.cpp:627
HTTP_API bool IsDomainAllowed(const FString &Url) const
Definition HttpManager.cpp:272
HTTP_API bool ShouldDisableFailedLog(FStringView Url) const
Definition HttpManager.cpp:733
FCriticalSection UrlPatternsToDisableFailedLogCriticalSection
Definition HttpManager.h:396
HTTP_API bool ShouldLogResponse(FStringView Url) const
Definition HttpManager.cpp:712
virtual HTTP_API bool SupportsDynamicProxy() const
Definition HttpManager.cpp:639
Definition HttpRequestCommon.h:15
Definition HttpThread.h:35
Definition OutputDevice.h:133
Definition Ticker.h:137
Definition Ticker.h:27
Definition IConsoleManager.h:558
Definition IHttpRequest.h:171
Definition HttpThread.h:22
Definition Array.h:670
Definition AndroidPlatformMisc.h:14
Definition UnrealString.h.inl:34
Definition SharedPointer.h:692
Definition SharedPointer.h:153
Definition URLRequestFilter.h:29
Definition HttpManager.h:350
FHttpFlushTimeLimit(double InSoftLimitSeconds, double InHardLimitSeconds)
Definition HttpManager.h:368
double HardLimitSeconds
Definition HttpManager.h:366
double SoftLimitSeconds
Definition HttpManager.h:357
Definition HttpManager.h:377
int32 HistoryIndex
Definition HttpManager.h:379
int64 DownloadedBytes[HttpHistoryCount]
Definition HttpManager.h:381
int64 TotalDuration
Definition HttpManager.h:386
int64 TotalDownloadedBytes
Definition HttpManager.h:384
int64 TotalUploadedBytes
Definition HttpManager.h:385
static constexpr int32 HttpHistoryCount
Definition HttpManager.h:378
int64 DurationMs[HttpHistoryCount]
Definition HttpManager.h:382
Definition HttpManager.h:412
FString Str
Definition HttpManager.h:413
FString Verb
Definition HttpManager.h:414
Definition HttpManager.h:53
uint64 MaxInUseSize
Definition HttpManager.h:55
uint64 PoolSize
Definition HttpManager.h:54
uint64 CurrentInUseSize
Definition HttpManager.h:56
Definition HttpManager.h:60
FHttpStatsPlatformMemoryPool MemoryPoolConnection
Definition HttpManager.h:61
FHttpStatsPlatformMemoryPool MemoryPoolNet
Definition HttpManager.h:63
FHttpStatsPlatformMemoryPool MemoryPoolSsl
Definition HttpManager.h:62
Definition HttpManager.h:67
std::atomic< uint32 > MaxRequestsInFlight
Definition HttpManager.h:80
std::atomic< uint32 > MaxRequestsInQueue
Definition HttpManager.h:78
std::atomic< int32 > RequestsInFlight
Definition HttpManager.h:74
std::atomic< int32 > RequestsInQueue
Definition HttpManager.h:72
std::atomic< float > MaxTimeToConnect
Definition HttpManager.h:76
TOptional< FHttpStatsPlatform > PlatformStats
Definition HttpManager.h:90
std::atomic< int64 > HttpDurationMsAvg
Definition HttpManager.h:88
std::atomic< int64 > TotalDownloadedBytes
Definition HttpManager.h:84
std::atomic< int64 > BandwidthMbps
Definition HttpManager.h:86
std::atomic< float > MaxTimeToWaitInQueue
Definition HttpManager.h:82
FHttpStats()
Definition HttpManager.h:92
FHttpStats(const FHttpStats &Other)
Definition HttpManager.h:96
Definition Optional.h:131