UDocumentation
UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
CurlMultiWaitEventLoopHttpThread.h
Go to the documentation of this file.
1
// Copyright Epic Games, Inc. All Rights Reserved.
2
3
#pragma once
4
5
#include "
CoreTypes.h
"
6
7
#if WITH_CURL
8
#if WITH_CURL_MULTIWAIT
9
10
#include "
EventLoopHttpThread.h
"
11
#include "
EventLoop/EventLoop.h
"
12
#include "
EventLoop/BSDSocket/EventLoopNotifier.h
"
13
#include "
Templates/Function.h
"
14
15
#if PLATFORM_MICROSOFT
16
#include "
Microsoft/AllowMicrosoftPlatformTypes.h
"
17
#endif
18
#ifdef PLATFORM_CURL_INCLUDE
19
#include PLATFORM_CURL_INCLUDE
20
#else
21
#include "curl/curl.h"
22
#endif
23
#if PLATFORM_MICROSOFT
24
#include "
Microsoft/HideMicrosoftPlatformTypes.h
"
25
#endif
26
27
class
FHttpRequestCommon
;
28
class
FCurlMultiWaitIOManager
;
29
30
class
FCurlMultiWaitIOManagerIOAccess
final :
public
FNoncopyable
31
{
32
public
:
33
FCurlMultiWaitIOManagerIOAccess
(
FCurlMultiWaitIOManager
&
InIOManager
);
34
35
// Nothing needed for now.
36
37
private
:
38
FCurlMultiWaitIOManager
& IOManager;
39
};
40
41
class
FCurlMultiWaitIOManager
final :
public
UE::EventLoop::IIOManager
42
{
43
public
:
44
using
FIOAccess =
FCurlMultiWaitIOManagerIOAccess
;
45
46
struct
FParams
47
{
48
CURLM
*
MultiHandle
=
nullptr
;
49
TUniqueFunction
<
void
()>
ProcessCurlRequests
;
50
};
51
52
FCurlMultiWaitIOManager
(
UE::EventLoop::IEventLoop
&
EventLoop
, FParams&& Params);
53
virtual
~FCurlMultiWaitIOManager
() =
default
;
54
virtual
bool
Init
()
override
;
55
virtual
void
Shutdown
()
override
;
56
virtual
void
Notify
()
override
;
57
virtual
void
Poll
(
FTimespan
WaitTime)
override
;
58
59
FIOAccess& GetIOAccess()
60
{
61
return
IOAccess;
62
}
63
64
private
:
65
void
CheckMultiCodeOk
(
const
CURLMcode
Code);
66
67
FIOAccess IOAccess;
68
UE::EventLoop::IEventLoop
&
EventLoop
;
69
FParams
Params
;
70
int32
EmptySequentialWaitCount
;
71
FEventLoopNotifier
EventLoopNotifier
;
72
};
73
74
class
FCurlMultiWaitEventLoopHttpThread
75
:
public
FEventLoopHttpThread
76
{
77
public
:
78
79
FCurlMultiWaitEventLoopHttpThread
();
80
81
protected
:
82
//~ Begin FHttpThread Interface
83
virtual
bool
StartThreadedRequest
(
FHttpRequestCommon
* Request)
override
;
84
virtual
void
CompleteThreadedRequest
(
FHttpRequestCommon
* Request)
override
;
85
//~ End FHttpThread Interface
86
protected
:
87
virtual
void
CreateEventLoop
()
override
;
88
virtual
void
DestroyEventLoop
()
override
;
89
virtual
void
UpdateEventLoopConfigs
()
override
;
90
virtual
UE::EventLoop::IEventLoop
*
GetEventLoop
()
override
;
91
virtual
UE::EventLoop::IEventLoop
&
GetEventLoopChecked
()
override
;
92
93
void
ProcessCurlRequests
();
94
95
TOptional<UE::EventLoop::TEventLoop<FCurlMultiWaitIOManager>
>
EventLoop
;
96
98
TMap<CURL*, FHttpRequestCommon*>
HandlesToRequests
;
99
};
100
101
#endif
// WITH_CURL_MULTIWAIT
102
#endif
// WITH_CURL
void
OODEFFUNC typedef void(OODLE_CALLBACK t_fp_OodleCore_Plugin_Free)(void *ptr)
AllowMicrosoftPlatformTypes.h
CoreTypes.h
int32
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition
Platform.h:1125
Function.h
StaticCastSharedRef
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition
SharedPointer.h:127
EventLoopHttpThread.h
EventLoopNotifier.h
EventLoop.h
HideMicrosoftPlatformTypes.h
EventLoop
Definition
EventLoop.Build.cs:6
FEventLoopHttpThread
Definition
EventLoopHttpThread.h:10
FEventLoopHttpThread::CreateEventLoop
virtual void CreateEventLoop()=0
FEventLoopHttpThread::GetEventLoop
virtual UE::EventLoop::IEventLoop * GetEventLoop()=0
FEventLoopHttpThread::GetEventLoopChecked
virtual UE::EventLoop::IEventLoop & GetEventLoopChecked()=0
FEventLoopHttpThread::DestroyEventLoop
virtual void DestroyEventLoop()=0
FEventLoopHttpThread::UpdateEventLoopConfigs
virtual void UpdateEventLoopConfigs()=0
FHttpRequestCommon
Definition
HttpRequestCommon.h:15
FHttpThreadBase::StartThreadedRequest
virtual bool StartThreadedRequest(FHttpRequestCommon *Request)
Definition
HttpThread.cpp:223
FHttpThreadBase::CompleteThreadedRequest
virtual void CompleteThreadedRequest(FHttpRequestCommon *Request)
Definition
HttpThread.cpp:228
FNoncopyable
Definition
UnrealTemplate.h:321
TMap
Definition
UnrealString.h.inl:34
TUniqueFunction
Definition
FunctionFwd.h:19
UE::EventLoop::IEventLoop
Definition
IEventLoop.h:26
UE::EventLoop::IIOManager
Definition
IEventLoopIOManager.h:28
UE::EventLoop::IIOManager::Shutdown
virtual void Shutdown()=0
UE::EventLoop::IIOManager::Notify
virtual void Notify()=0
UE::EventLoop::IIOManager::Init
virtual bool Init()=0
UE::EventLoop::IIOManager::Poll
virtual void Poll(FTimespan WaitTime)=0
MeshPaintVirtualTexture::Params
FUniformParams Params
Definition
MeshPaintVirtualTexture.cpp:162
FTimespan
Definition
Timespan.h:76
TOptional
Definition
Optional.h:131
Engine
Source
Runtime
Online
HTTP
Private
Curl
CurlMultiWaitEventLoopHttpThread.h
Generated by
1.9.8