7#define IAS_HTTP_SOCKET_FORWARD(Src, Dest) \
8 template <typename... ArgTypes> \
9 static auto Socket_##Src(ArgTypes&&... Args) { \
10 return Dest(Forward<ArgTypes>(Args)...); \
14# if !defined(NO_UE_INCLUDES)
23# pragma comment(lib, "Ws2_32.lib")
41# define IAS_HTTP_USE_POLL
49#elif PLATFORM_APPLE | PLATFORM_UNIX | PLATFORM_ANDROID
50# include <arpa/inet.h>
53# include <netinet/tcp.h>
55# include <sys/select.h>
56# include <sys/socket.h>
64# define IAS_HTTP_USE_POLL
66# include "CoreHttp/Http.inl"
69#if defined(IAS_HTTP_SOCKET_FORWARD)
85 static void Poll_DestroyContext(
PollType) {}
86 static bool Poll_Register(...) {
return true; }
88#if defined(IAS_HTTP_USE_POLL)
103static_assert(
sizeof(sockaddr_in::sin_addr) ==
sizeof(
uint32));
105#if PLATFORM_MICROSOFT
107# define IsSocketResult(err) (LastSocketResult() == WSA##err)
109 static int32 LastSocketResult() {
return errno; }
110# define IsSocketResult(err) int32(LastSocketResult() == err)
159#if defined(IAS_HTTP_USE_POLL)
160 using FPollFdBase =
pollfd;
189 events = EventType(Events);
201 using FdType =
decltype(
fd);
202 using EventType =
decltype(
events);
225#if defined(IAS_HTTP_USE_POLL)
267 Poll.revents = Poll.events;
297 bool IsValid()
const {
return Socket != InvalidSocket; }
373 bool IsValid()
const {
return Socket != InvalidSocket; }
394void FSocket::Move(
FSocket&& Rhs)
397 Swap(Socket, Rhs.Socket);
421 if (Socket == InvalidSocket)
429 Socket = InvalidSocket;
492 if (Result < 0 ||
Error != 0)
494 Result = (Result < 0) ? LastSocketResult() :
Error;
501 Result = LastSocketResult();
520 Result = LastSocketResult();
527#if defined(IAS_HTTP_HAS_NONBLOCK_IMPL)
529#elif PLATFORM_MICROSOFT
562 .Name =
"Iax/Socket",
608 else if (!
Outcome->IsWaiting())
constexpr auto MakeArrayView(OtherRangeType &&Other)
Definition ArrayView.h:873
#define check(expr)
Definition AssertionMacros.h:314
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
UE_API void LaneTrace_Leave(FLaneTrace *Lane) LANETRACE_OFF_IMPL()
UE_API uint32 LaneTrace_NewScope(const FAnsiStringView &Name) LANETRACE_OFF_IMPL(1)
UE_API FLaneTrace * LaneEstate_Lookup(FLaneEstate *Estate, FLanePostcode Postcode) LANETRACE_OFF_IMPL(nullptr)
UE_API FLaneEstate * LaneEstate_New(const FLaneTraceSpec &Spec) LANETRACE_OFF_IMPL(nullptr)
UE_API void LaneEstate_Demolish(FLaneEstate *Estate, FLanePostcode Postcode) LANETRACE_OFF_IMPL()
UE_API void LaneTrace_Enter(FLaneTrace *Lane, uint32 ScopeId) LANETRACE_OFF_IMPL()
UE_API void LaneTrace_Change(FLaneTrace *Lane, uint32 ScopeId) LANETRACE_OFF_IMPL()
UE_API FLaneTrace * LaneEstate_Build(FLaneEstate *Estate, FLanePostcode Postcode) LANETRACE_OFF_IMPL(nullptr)
#define SOCKET_ERROR
Definition SocketSubsystemBSDPrivate.h:43
int32 closesocket(SOCKET Socket)
Definition SocketSubsystemBSDPrivate.h:51
#define ioctlsocket
Definition SocketSubsystemBSDPrivate.h:40
#define IsSocketResult(err)
Definition Socket.inl:110
#define IAS_HTTP_SOCKET_FORWARD(Src, Dest)
Definition Socket.inl:7
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
memcpy(InputBufferBase, BinkBlocksData, BinkBlocksSize)
Definition ArrayView.h:139
UE_FORCEINLINE_HINT SizeType Emplace(ArgsType &&... Args)
Definition Array.h:2561
static FOutcome Ok(int32 Result=0)
Definition Misc.inl:113
static FOutcome Error(const char *Message, int32 Code=-1)
Definition Misc.inl:151
static FOutcome Waiting(int32 Result=0)
Definition Misc.inl:122
Definition Socket.inl:207
bool Register(const FWaitable &Waitable)
Definition Socket.inl:213
FPoller(FPoller &&Rhs)
Definition Socket.inl:210
FPoller & operator=(FPoller &&Rhs)
Definition Socket.inl:212
FPoller()
Definition Socket.inl:209
int32 Wait(FPollFd *Polls, int32 Num, int32 TimeOutMs)
Definition Socket.inl:223
~FPoller()
Definition Socket.inl:211
Definition Socket.inl:367
bool SetSendBufSize(int32 Size)
Definition Socket.inl:547
FOutcome Recv(char *Dest, uint32 Size)
Definition Socket.inl:506
FOutcome Connect(uint32 Ip, uint32 Port)
Definition Socket.inl:433
bool SetBlocking(bool bBlocking)
Definition Socket.inl:525
void Disconnect()
Definition Socket.inl:466
FOutcome Send(const char *Data, uint32 Size)
Definition Socket.inl:473
~FSocket()
Definition Socket.inl:370
bool SetRecvBufSize(int32 Size)
Definition Socket.inl:553
FWaitable GetWaitable() const
Definition Socket.inl:374
FSocket(FSocket &&Rhs)
Definition Socket.inl:371
bool Create()
Definition Socket.inl:401
bool IsValid() const
Definition Socket.inl:373
FSocket & operator=(FSocket &&Rhs)
Definition Socket.inl:372
void Destroy()
Definition Socket.inl:419
Definition Socket.inl:130
FWaitable & operator=(FWaitable &&)=default
FWaitable(FWaitable &&)=default
Definition Socket.inl:281
uint32 GetIndex() const
Definition Socket.inl:301
FWaiter(FWaiter &&)=default
EWhat
Definition Socket.inl:284
void WaitFor(EWhat What)
Definition Socket.inl:299
static int32 Wait(TArrayView< FWaiter > Waiters, FPoller &Poller, int32 TimeoutMs)
Definition Socket.inl:321
void SetIndex(uint32 InIndex)
Definition Socket.inl:300
bool IsValid() const
Definition Socket.inl:297
FWaiter & operator=(FWaiter &&)=default
bool IsReady() const
Definition Socket.inl:298
int
Definition TestServer.py:515
SOCKET SocketType
Definition Overlapped.inl:10
ETrace
Definition Misc.inl:12
uint16 Socket_HtoNs(uint16 v)
Definition Socket.inl:117
uint32 Socket_HtoNl(uint32 v)
Definition Socket.inl:116
UPTRINT PollType
Definition Socket.inl:83
IOSTOREHTTPCLIENT_API const void * GetIaxTraceChannel()
Definition Misc.inl:49
float v
Definition radaudio_mdct.cpp:62
U16 Index
Definition radfft.cpp:71
Definition Socket.inl:163
SocketType fd
Definition Socket.inl:164
static const int16 POLLNVAL
Definition Socket.inl:171
static const int16 POLLERR
Definition Socket.inl:169
int16 revents
Definition Socket.inl:166
static const int16 POLLHUP
Definition Socket.inl:170
static const int16 POLLOUT
Definition Socket.inl:168
static const int16 POLLIN
Definition Socket.inl:167
int16 events
Definition Socket.inl:165
Definition Socket.inl:178
bool HasSendTrigger() const
Definition Socket.inl:194
static const int16 PollNVal
Definition Socket.inl:183
static const int16 PollIn
Definition Socket.inl:179
static const int16 PollHup
Definition Socket.inl:182
bool HasTrigger() const
Definition Socket.inl:193
FPollFd(SocketType Socket, int16 Events)
Definition Socket.inl:186
bool HasRecvTrigger() const
Definition Socket.inl:195
static const int16 PollOut
Definition Socket.inl:180
static const int16 PollErr
Definition Socket.inl:181
static const int16 PollAll
Definition Socket.inl:184