UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
Client.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#if !defined(NO_UE_INCLUDES)
7#include <Memory/MemoryView.h>
8#endif
9
10#if !defined(IAS_HTTP_WITH_PERF)
11# define IAS_HTTP_WITH_PERF 1
12#endif
13
14#define UE_API IOSTOREHTTPCLIENT_API
15
17class FIoBuffer;
18
20{
21
23enum class EHttpVersion : uint8
24{
25 Default,
26 One, // 1.1 in actuality
27 Two,
28};
29
31enum class EMimeType
32{
33 Unknown = 0,
34 Text,
35 Binary,
36 Json,
37 Xml,
41 Count
42};
43
54
58struct FActivityNode;
59
62{
63public:
64 FCertRoots() = default;
67 FCertRoots(FCertRoots&& Rhs) { *this = MoveTemp(Rhs); }
68 FCertRoots& operator = (FCertRoots&& Rhs) { Swap(Handle, Rhs.Handle); return *this; }
69 bool IsValid() const { return Handle != 0; }
70 UE_API int32 Num() const;
72 static UE_API FCertRootsRef NoTls();
75
76private:
77 UPTRINT Handle = 0;
78
79private:
80 FCertRoots(const FCertRoots&) = delete;
81 FCertRoots& operator = (const FCertRoots&) = delete;
82};
83
86{
87public:
88 struct FParams
89 {
99 /*
100 enum class ProxyType { Http, Socks4 };
101 Proxy = { ip, port, type }
102 */
103 };
104
105 FConnectionPool() = default;
106 UE_API FConnectionPool(const FParams& Params);
108 FConnectionPool(FConnectionPool&& Rhs) { *this = MoveTemp(Rhs); }
109 FConnectionPool& operator = (FConnectionPool&& Rhs) { Swap(Ptr, Rhs.Ptr); return *this; }
110 UE_API bool Resolve();
112
113 static UE_API bool IsValidHostUrl(FAnsiStringView Url);
114
115private:
116 friend class FEventLoop;
117 class FHost* Ptr = nullptr;
118
119private:
120 FConnectionPool(const FConnectionPool&) = delete;
122};
123
126{
127public:
129 UE_API FRequest(FRequest&& Rhs);
130 bool IsValid() const { return Ptr != nullptr; }
131 UE_API FRequest&& Accept(EMimeType MimeType);
134 UE_API void Content(const void* Data, SIZE_T Size, EMimeType MimeType);
135 UE_API void Content(const void* Data, SIZE_T Size, FAnsiStringView MimeType);
136
137private:
138 friend class FEventLoop;
139 FRequest() = default;
140 FActivityNode* Ptr = nullptr;
141
142private:
143 FRequest(const FRequest&) = delete;
144 FRequest& operator = (const FRequest&) = delete;
145 FRequest& operator = (FRequest&&) = delete;
146};
147
150{
151public:
153
159 UE_API void GetContentType(FAnsiStringView& Out) const;
161 UE_API void ReadHeaders(FHeaderSink Sink) const;
163
164private:
165 FResponse() = delete;
166 FResponse(const FResponse&) = delete;
167 FResponse(FResponse&&) = delete;
168 FResponse& operator = (const FResponse&) = delete;
169 FResponse& operator = (FResponse&&) = delete;
170};
171
174{
175public:
185
187};
188
189#if !IAS_HTTP_WITH_PERF
190inline FTicketPerf::FSample FTicketPerf::GetSample() const { return {}; }
191#endif
192
195{
196public:
198
199 struct FError
200 {
201 const char* Reason;
203 };
204
205 UE_API EId GetId() const;
206 UE_API UPTRINT GetParam() const;
207 UE_API FTicket GetTicket() const;
208 UE_API uint32 GetIndex() const;
209 UE_API FResponse& GetResponse() const; // if GetId() == EId::Response
210 UE_API const FIoBuffer& GetContent() const; // if GetId() == EId::Content
211 UE_API uint32 GetContentLength() const; // |
212 UE_API const FTicketPerf& GetPerf() const; // _|_
213 UE_API FError GetError() const; // if GetId() == EId::Error
214
215private:
216 FTicketStatus() = delete;
217 FTicketStatus(const FTicketStatus&) = delete;
218 FTicketStatus(FTicketStatus&&) = delete;
219 FTicketStatus& operator = (const FTicketStatus&) = delete;
220 FTicketStatus& operator = (FTicketStatus&&) = delete;
221};
222
224
227{
228 class FImpl;
229
230public:
231 static UE_API const uint32 MaxActiveTickets = 64;
232
242
243 template <typename... T> [[nodiscard]] FRequest Get(T&&... t) { return Request("GET", Forward<T&&>(t)...); }
244 template <typename... T> [[nodiscard]] FRequest Post(T&&... t) { return Request("POST", Forward<T&&>(t)...); }
245
248 UE_API uint32 Tick(int32 PollTimeoutMs=0);
250 UE_API void SetFailTimeout(int32 TimeoutMs);
251 UE_API bool IsIdle() const;
253 [[nodiscard]] UE_API FRequest Request(FAnsiStringView Method, FAnsiStringView Url, const FRequestParams* Params=nullptr);
254 [[nodiscard]] UE_API FRequest Request(FAnsiStringView Method, FAnsiStringView Path, FConnectionPool& Pool, const FRequestParams* Params=nullptr);
255 UE_API FTicket Send(FRequest&& Request, FTicketSink Sink, UPTRINT SinkParam=0);
256
257private:
258 bool Redirect(const FTicketStatus& Status, FTicketSink& OuterSink);
259 FImpl* Impl;
260
261private:
262 FEventLoop(const FEventLoop&) = delete;
263 FEventLoop(FEventLoop&&) = delete;
264 FEventLoop& operator = (const FEventLoop&) = delete;
265 FEventLoop& operator = (FEventLoop&&) = delete;
266};
267
268} // namespace UE::IoStore::HTTP
269
270#undef UE_API
OODEFFUNC typedef void(OODLE_CALLBACK t_fp_OodleCore_Plugin_Free)(void *ptr)
FPlatformTypes::SIZE_T SIZE_T
An unsigned integer the same size as a pointer, the same as UPTRINT.
Definition Platform.h:1150
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::UPTRINT UPTRINT
An unsigned integer the same size as a pointer.
Definition Platform.h:1146
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
const bool
Definition NetworkReplayStreaming.h:178
#define UE_API
Definition SColorGradingComponentViewer.h:12
UE_INTRINSIC_CAST UE_REWRITE constexpr std::remove_reference_t< T > && MoveTemp(T &&Obj) noexcept
Definition UnrealTemplate.h:520
uint32 Size
Definition VulkanMemory.cpp:4034
uint8_t uint8
Definition binka_ue_file_header.h:8
uint16_t uint16
Definition binka_ue_file_header.h:7
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition IoBuffer.h:15
Definition AndroidPlatformMisc.h:14
Definition StringBuilder.h:79
Definition Client.h:62
FCertRoots & operator=(FCertRoots &&Rhs)
Definition Client.h:68
bool IsValid() const
Definition Client.h:69
UE_API int32 Num() const
Definition Peer.inl:382
UE_API ~FCertRoots()
Definition Peer.inl:367
static UE_API FCertRootsRef NoTls()
Definition Peer.inl:400
FCertRoots(FCertRoots &&Rhs)
Definition Client.h:67
static UE_API FCertRootsRef Default()
Definition Peer.inl:406
static UE_API void SetDefault(FCertRoots &&CertRoots)
Definition Peer.inl:393
UE_API bool Resolve()
Definition ConnectionPool.inl:284
FConnectionPool(FConnectionPool &&Rhs)
Definition Client.h:108
static UE_API bool IsValidHostUrl(FAnsiStringView Url)
Definition ConnectionPool.inl:311
UE_API void Describe(FAnsiStringBuilderBase &) const
Definition ConnectionPool.inl:290
UE_API ~FConnectionPool()
Definition ConnectionPool.inl:275
FConnectionPool & operator=(FConnectionPool &&Rhs)
Definition Client.h:109
Definition Client.h:227
UE_API FRequest Request(FAnsiStringView Method, FAnsiStringView Url, const FRequestParams *Params=nullptr)
Definition Loop.inl:1185
UE_API void SetFailTimeout(int32 TimeoutMs)
Definition Loop.inl:1182
UE_API void Throttle(uint32 KiBPerSec)
Definition Loop.inl:1181
static UE_API const uint32 MaxActiveTickets
Definition Client.h:231
UE_API ~FEventLoop()
Definition Loop.inl:1177
UE_API bool IsIdle() const
Definition Loop.inl:1179
FRequest Post(T &&... t)
Definition Client.h:244
UE_API FEventLoop()
Definition Loop.inl:1176
FRequest Get(T &&... t)
Definition Client.h:243
Definition ConnectionPool.inl:10
Definition Client.h:126
UE_API void Content(const void *Data, SIZE_T Size, FAnsiStringView MimeType)
UE_API void Content(const void *Data, SIZE_T Size, EMimeType MimeType)
UE_API ~FRequest()
Definition Api.inl:11
bool IsValid() const
Definition Client.h:130
Definition Client.h:150
UE_API EStatusCodeClass GetStatus() const
Definition Api.inl:63
UE_API void SetDestination(FIoBuffer *Buffer)
Definition Api.inl:149
UE_API uint32 GetStatusCode() const
Definition Api.inl:75
UE_API FAnsiStringView GetStatusMessage() const
Definition Api.inl:82
UE_API void ReadHeaders(FHeaderSink Sink) const
Definition Api.inl:142
UE_API FAnsiStringView GetHeader(FAnsiStringView Name) const
Definition Api.inl:125
UE_API int64 GetContentLength() const
Definition Api.inl:89
UE_API EMimeType GetContentType() const
Definition Api.inl:96
Definition Client.h:174
UE_API FSample GetSample() const
Definition Client.h:195
UE_API UPTRINT GetParam() const
Definition Api.inl:175
UE_API FError GetError() const
Definition Api.inl:228
EId
Definition Client.h:197
UE_API FResponse & GetResponse() const
Definition Api.inl:196
UE_API const FTicketPerf & GetPerf() const
Definition Api.inl:212
UE_API uint32 GetIndex() const
Definition Api.inl:189
UE_API uint32 GetContentLength() const
Definition Api.inl:204
UE_API const FIoBuffer & GetContent() const
Definition Api.inl:220
UE_API FTicket GetTicket() const
Definition Api.inl:182
UE_API EId GetId() const
Definition Api.inl:160
Definition HttpServerHttpVersion.h:7
Definition ExpressionParserTypes.h:21
Definition Client.h:20
EMimeType
Definition Client.h:32
EHttpVersion
Definition Client.h:24
EStatusCodeClass
Definition Client.h:46
UPTRINT FCertRootsRef
Definition Client.h:56
uint64 FTicket
Definition Client.h:57
Definition Loop.inl:30
UE_API int32 SetHostFromUrl(FAnsiStringView Url)
Definition ConnectionPool.inl:216
FCertRootsRef VerifyCert
Definition Client.h:92
uint16 ConnectionCount
Definition Client.h:96
FAnsiStringView HostName
Definition Client.h:91
int32 RecvBufSize
Definition Client.h:94
uint8 MaxInflight
Definition Client.h:98
int32 SendBufSize
Definition Client.h:93
uint32 Port
Definition Client.h:95
uint32 ContentSizeEst
Definition Client.h:236
uint16 BufferSize
Definition Client.h:237
bool bAutoRedirect
Definition Client.h:238
bool bAllowChunked
Definition Client.h:239
FCertRootsRef VerifyCert
Definition Client.h:235
uint16 RecvKiBps
Definition Client.h:181
uint16 RecvMs
Definition Client.h:180
uint32 GetSizeEstKiB() const
Definition Client.h:183
uint32 GetTotalMs() const
Definition Client.h:182
uint16 SendMs
Definition Client.h:178
uint16 WaitMs
Definition Client.h:179
const char * Reason
Definition Client.h:201
uint32 Code
Definition Client.h:202