Commit 02d4e327 authored by Mihnea Olteanu's avatar Mihnea Olteanu Committed by Facebook GitHub Bot

Stub out sockets for EMSCRIPTEN

Summary: Stub out sockets when building under EMSCRIPTEN (aka WASM compiler) like was done in D26579892 (https://github.com/facebook/folly/commit/c76b89b60652af52ee163795d526f2f10a114b20) for XROS.

Reviewed By: yfeldblum

Differential Revision: D28107594

fbshipit-source-id: 8a0d3033793a857cce587c5349934bc6f2a4bec5
parent c30526f7
...@@ -82,7 +82,7 @@ static R wrapSocketFunction(F f, NetworkSocket s, Args... args) { ...@@ -82,7 +82,7 @@ static R wrapSocketFunction(F f, NetworkSocket s, Args... args) {
} // namespace } // namespace
NetworkSocket accept(NetworkSocket s, sockaddr* addr, socklen_t* addrlen) { NetworkSocket accept(NetworkSocket s, sockaddr* addr, socklen_t* addrlen) {
#if defined(__XROS__) #if defined(__XROS__) || defined(__EMSCRIPTEN__)
throw std::logic_error("Not implemented!"); throw std::logic_error("Not implemented!");
#else #else
return NetworkSocket(wrapSocketFunction<NetworkSocket::native_handle_type>( return NetworkSocket(wrapSocketFunction<NetworkSocket::native_handle_type>(
...@@ -91,7 +91,7 @@ NetworkSocket accept(NetworkSocket s, sockaddr* addr, socklen_t* addrlen) { ...@@ -91,7 +91,7 @@ NetworkSocket accept(NetworkSocket s, sockaddr* addr, socklen_t* addrlen) {
} }
int bind(NetworkSocket s, const sockaddr* name, socklen_t namelen) { int bind(NetworkSocket s, const sockaddr* name, socklen_t namelen) {
#if defined(__XROS__) #if defined(__XROS__) || defined(__EMSCRIPTEN__)
throw std::logic_error("Not implemented!"); throw std::logic_error("Not implemented!");
#else #else
if (kIsWindows && name->sa_family == AF_UNIX) { if (kIsWindows && name->sa_family == AF_UNIX) {
...@@ -109,7 +109,7 @@ int bind(NetworkSocket s, const sockaddr* name, socklen_t namelen) { ...@@ -109,7 +109,7 @@ int bind(NetworkSocket s, const sockaddr* name, socklen_t namelen) {
} }
int close(NetworkSocket s) { int close(NetworkSocket s) {
#if defined(__XROS__) #if defined(__XROS__) || defined(__EMSCRIPTEN__)
throw std::logic_error("Not implemented!"); throw std::logic_error("Not implemented!");
#else #else
return netops::detail::SocketFileDescriptorMap::close(s.data); return netops::detail::SocketFileDescriptorMap::close(s.data);
...@@ -117,7 +117,7 @@ int close(NetworkSocket s) { ...@@ -117,7 +117,7 @@ int close(NetworkSocket s) {
} }
int connect(NetworkSocket s, const sockaddr* name, socklen_t namelen) { int connect(NetworkSocket s, const sockaddr* name, socklen_t namelen) {
#if defined(__XROS__) #if defined(__XROS__) || defined(__EMSCRIPTEN__)
throw std::logic_error("Not implemented!"); throw std::logic_error("Not implemented!");
#else #else
auto r = wrapSocketFunction<int>(::connect, s, name, namelen); auto r = wrapSocketFunction<int>(::connect, s, name, namelen);
...@@ -131,7 +131,7 @@ int connect(NetworkSocket s, const sockaddr* name, socklen_t namelen) { ...@@ -131,7 +131,7 @@ int connect(NetworkSocket s, const sockaddr* name, socklen_t namelen) {
} }
int getpeername(NetworkSocket s, sockaddr* name, socklen_t* namelen) { int getpeername(NetworkSocket s, sockaddr* name, socklen_t* namelen) {
#if defined(__XROS__) #if defined(__XROS__) || defined(__EMSCRIPTEN__)
throw std::logic_error("Not implemented!"); throw std::logic_error("Not implemented!");
#else #else
return wrapSocketFunction<int>(::getpeername, s, name, namelen); return wrapSocketFunction<int>(::getpeername, s, name, namelen);
...@@ -139,7 +139,7 @@ int getpeername(NetworkSocket s, sockaddr* name, socklen_t* namelen) { ...@@ -139,7 +139,7 @@ int getpeername(NetworkSocket s, sockaddr* name, socklen_t* namelen) {
} }
int getsockname(NetworkSocket s, sockaddr* name, socklen_t* namelen) { int getsockname(NetworkSocket s, sockaddr* name, socklen_t* namelen) {
#if defined(__XROS__) #if defined(__XROS__) || defined(__EMSCRIPTEN__)
throw std::logic_error("Not implemented!"); throw std::logic_error("Not implemented!");
#else #else
return wrapSocketFunction<int>(::getsockname, s, name, namelen); return wrapSocketFunction<int>(::getsockname, s, name, namelen);
...@@ -148,7 +148,7 @@ int getsockname(NetworkSocket s, sockaddr* name, socklen_t* namelen) { ...@@ -148,7 +148,7 @@ int getsockname(NetworkSocket s, sockaddr* name, socklen_t* namelen) {
int getsockopt( int getsockopt(
NetworkSocket s, int level, int optname, void* optval, socklen_t* optlen) { NetworkSocket s, int level, int optname, void* optval, socklen_t* optlen) {
#if defined(__XROS__) #if defined(__XROS__) || defined(__EMSCRIPTEN__)
throw std::logic_error("Not implemented!"); throw std::logic_error("Not implemented!");
#else #else
auto ret = wrapSocketFunction<int>( auto ret = wrapSocketFunction<int>(
...@@ -167,7 +167,7 @@ int getsockopt( ...@@ -167,7 +167,7 @@ int getsockopt(
} }
int inet_aton(const char* cp, in_addr* inp) { int inet_aton(const char* cp, in_addr* inp) {
#if defined(__XROS__) #if defined(__XROS__) || defined(__EMSCRIPTEN__)
throw std::logic_error("Not implemented!"); throw std::logic_error("Not implemented!");
#else #else
inp->s_addr = inet_addr(cp); inp->s_addr = inet_addr(cp);
...@@ -176,7 +176,7 @@ int inet_aton(const char* cp, in_addr* inp) { ...@@ -176,7 +176,7 @@ int inet_aton(const char* cp, in_addr* inp) {
} }
int listen(NetworkSocket s, int backlog) { int listen(NetworkSocket s, int backlog) {
#if defined(__XROS__) #if defined(__XROS__) || defined(__EMSCRIPTEN__)
throw std::logic_error("Not implemented!"); throw std::logic_error("Not implemented!");
#else #else
return wrapSocketFunction<int>(::listen, s, backlog); return wrapSocketFunction<int>(::listen, s, backlog);
...@@ -184,7 +184,7 @@ int listen(NetworkSocket s, int backlog) { ...@@ -184,7 +184,7 @@ int listen(NetworkSocket s, int backlog) {
} }
int poll(PollDescriptor fds[], nfds_t nfds, int timeout) { int poll(PollDescriptor fds[], nfds_t nfds, int timeout) {
#if defined(__XROS__) #if defined(__XROS__) || defined(__EMSCRIPTEN__)
throw std::logic_error("Not implemented!"); throw std::logic_error("Not implemented!");
#else #else
// Make sure that PollDescriptor is byte-for-byte identical to pollfd, // Make sure that PollDescriptor is byte-for-byte identical to pollfd,
...@@ -223,7 +223,7 @@ int poll(PollDescriptor fds[], nfds_t nfds, int timeout) { ...@@ -223,7 +223,7 @@ int poll(PollDescriptor fds[], nfds_t nfds, int timeout) {
#else #else
return ::poll(files, nfds, timeout); return ::poll(files, nfds, timeout);
#endif #endif
#endif // defined(__XROS__) #endif // defined(__XROS__) || defined(__EMSCRIPTEN__)
} }
ssize_t recv(NetworkSocket s, void* buf, size_t len, int flags) { ssize_t recv(NetworkSocket s, void* buf, size_t len, int flags) {
...@@ -248,7 +248,7 @@ ssize_t recv(NetworkSocket s, void* buf, size_t len, int flags) { ...@@ -248,7 +248,7 @@ ssize_t recv(NetworkSocket s, void* buf, size_t len, int flags) {
} }
} }
return wrapSocketFunction<ssize_t>(::recv, s, (char*)buf, (int)len, flags); return wrapSocketFunction<ssize_t>(::recv, s, (char*)buf, (int)len, flags);
#elif defined(__XROS__) #elif defined(__XROS__) || defined(__EMSCRIPTEN__)
throw std::logic_error("Not implemented!"); throw std::logic_error("Not implemented!");
#else #else
return wrapSocketFunction<ssize_t>(::recv, s, buf, len, flags); return wrapSocketFunction<ssize_t>(::recv, s, buf, len, flags);
...@@ -310,7 +310,7 @@ ssize_t recvfrom( ...@@ -310,7 +310,7 @@ ssize_t recvfrom(
} }
return wrapSocketFunction<ssize_t>( return wrapSocketFunction<ssize_t>(
::recvfrom, s, (char*)buf, (int)len, flags, from, fromlen); ::recvfrom, s, (char*)buf, (int)len, flags, from, fromlen);
#elif defined(__XROS__) #elif defined(__XROS__) || defined(__EMSCRIPTEN__)
throw std::logic_error("Not implemented!"); throw std::logic_error("Not implemented!");
#else #else
return wrapSocketFunction<ssize_t>( return wrapSocketFunction<ssize_t>(
...@@ -362,7 +362,7 @@ ssize_t recvmsg(NetworkSocket s, msghdr* message, int flags) { ...@@ -362,7 +362,7 @@ ssize_t recvmsg(NetworkSocket s, msghdr* message, int flags) {
int res = WSARecvMsg(h, &msg, &bytesReceived, nullptr, nullptr); int res = WSARecvMsg(h, &msg, &bytesReceived, nullptr, nullptr);
errno = translate_wsa_error(WSAGetLastError()); errno = translate_wsa_error(WSAGetLastError());
return res == 0 ? (ssize_t)bytesReceived : -1; return res == 0 ? (ssize_t)bytesReceived : -1;
#elif defined(__XROS__) #elif defined(__XROS__) || defined(__EMSCRIPTEN__)
throw std::logic_error("Not implemented!"); throw std::logic_error("Not implemented!");
#else #else
return wrapSocketFunction<ssize_t>(::recvmsg, s, message, flags); return wrapSocketFunction<ssize_t>(::recvmsg, s, message, flags);
...@@ -375,7 +375,7 @@ int recvmmsg( ...@@ -375,7 +375,7 @@ int recvmmsg(
unsigned int vlen, unsigned int vlen,
unsigned int flags, unsigned int flags,
timespec* timeout) { timespec* timeout) {
#if defined(__XROS__) #if defined(__XROS__) || defined(__EMSCRIPTEN__)
throw std::logic_error("Not implemented!"); throw std::logic_error("Not implemented!");
#else #else
if (reinterpret_cast<void*>(::recvmmsg) != nullptr) { if (reinterpret_cast<void*>(::recvmmsg) != nullptr) {
...@@ -404,7 +404,7 @@ ssize_t send(NetworkSocket s, const void* buf, size_t len, int flags) { ...@@ -404,7 +404,7 @@ ssize_t send(NetworkSocket s, const void* buf, size_t len, int flags) {
#ifdef _WIN32 #ifdef _WIN32
return wrapSocketFunction<ssize_t>( return wrapSocketFunction<ssize_t>(
::send, s, (const char*)buf, (int)len, flags); ::send, s, (const char*)buf, (int)len, flags);
#elif defined(__XROS__) #elif defined(__XROS__) || defined(__EMSCRIPTEN__)
throw std::logic_error("Not implemented!"); throw std::logic_error("Not implemented!");
#else #else
return wrapSocketFunction<ssize_t>(::send, s, buf, len, flags); return wrapSocketFunction<ssize_t>(::send, s, buf, len, flags);
...@@ -447,7 +447,7 @@ ssize_t sendmsg(NetworkSocket socket, const msghdr* message, int flags) { ...@@ -447,7 +447,7 @@ ssize_t sendmsg(NetworkSocket socket, const msghdr* message, int flags) {
bytesSent += r; bytesSent += r;
} }
return bytesSent; return bytesSent;
#elif defined(__XROS__) #elif defined(__XROS__) || defined(__EMSCRIPTEN__)
throw std::logic_error("Not implemented!"); throw std::logic_error("Not implemented!");
#else #else
return wrapSocketFunction<ssize_t>(::sendmsg, socket, message, flags); return wrapSocketFunction<ssize_t>(::sendmsg, socket, message, flags);
...@@ -458,7 +458,7 @@ int sendmmsg( ...@@ -458,7 +458,7 @@ int sendmmsg(
NetworkSocket socket, mmsghdr* msgvec, unsigned int vlen, int flags) { NetworkSocket socket, mmsghdr* msgvec, unsigned int vlen, int flags) {
#if FOLLY_HAVE_SENDMMSG #if FOLLY_HAVE_SENDMMSG
return wrapSocketFunction<int>(::sendmmsg, socket, msgvec, vlen, flags); return wrapSocketFunction<int>(::sendmmsg, socket, msgvec, vlen, flags);
#elif defined(__XROS__) #elif defined(__XROS__) || defined(__EMSCRIPTEN__)
throw std::logic_error("Not implemented!"); throw std::logic_error("Not implemented!");
#else #else
// implement via sendmsg // implement via sendmsg
...@@ -492,7 +492,7 @@ ssize_t sendto( ...@@ -492,7 +492,7 @@ ssize_t sendto(
#ifdef _WIN32 #ifdef _WIN32
return wrapSocketFunction<ssize_t>( return wrapSocketFunction<ssize_t>(
::sendto, s, (const char*)buf, (int)len, flags, to, (int)tolen); ::sendto, s, (const char*)buf, (int)len, flags, to, (int)tolen);
#elif defined(__XROS__) #elif defined(__XROS__) || defined(__EMSCRIPTEN__)
throw std::logic_error("Not implemented!"); throw std::logic_error("Not implemented!");
#else #else
return wrapSocketFunction<ssize_t>(::sendto, s, buf, len, flags, to, tolen); return wrapSocketFunction<ssize_t>(::sendto, s, buf, len, flags, to, tolen);
...@@ -517,7 +517,7 @@ int setsockopt( ...@@ -517,7 +517,7 @@ int setsockopt(
} }
return wrapSocketFunction<int>( return wrapSocketFunction<int>(
::setsockopt, s, level, optname, (char*)optval, optlen); ::setsockopt, s, level, optname, (char*)optval, optlen);
#elif defined(__XROS__) #elif defined(__XROS__) || defined(__EMSCRIPTEN__)
throw std::logic_error("Not implemented!"); throw std::logic_error("Not implemented!");
#else #else
return wrapSocketFunction<int>( return wrapSocketFunction<int>(
...@@ -526,7 +526,7 @@ int setsockopt( ...@@ -526,7 +526,7 @@ int setsockopt(
} }
int shutdown(NetworkSocket s, int how) { int shutdown(NetworkSocket s, int how) {
#if defined(__XROS__) #if defined(__XROS__) || defined(__EMSCRIPTEN__)
throw std::logic_error("Not implemented!"); throw std::logic_error("Not implemented!");
#else #else
return wrapSocketFunction<int>(::shutdown, s, how); return wrapSocketFunction<int>(::shutdown, s, how);
...@@ -534,7 +534,7 @@ int shutdown(NetworkSocket s, int how) { ...@@ -534,7 +534,7 @@ int shutdown(NetworkSocket s, int how) {
} }
NetworkSocket socket(int af, int type, int protocol) { NetworkSocket socket(int af, int type, int protocol) {
#if defined(__XROS__) #if defined(__XROS__) || defined(__EMSCRIPTEN__)
throw std::logic_error("Not implemented!"); throw std::logic_error("Not implemented!");
#else #else
return NetworkSocket(::socket(af, type, protocol)); return NetworkSocket(::socket(af, type, protocol));
...@@ -667,7 +667,7 @@ int socketpair(int domain, int type, int protocol, NetworkSocket sv[2]) { ...@@ -667,7 +667,7 @@ int socketpair(int domain, int type, int protocol, NetworkSocket sv[2]) {
sv[0] = NetworkSocket(static_cast<SOCKET>(pair[0])); sv[0] = NetworkSocket(static_cast<SOCKET>(pair[0]));
sv[1] = NetworkSocket(static_cast<SOCKET>(pair[1])); sv[1] = NetworkSocket(static_cast<SOCKET>(pair[1]));
return r; return r;
#elif defined(__XROS__) #elif defined(__XROS__) || defined(__EMSCRIPTEN__)
throw std::logic_error("Not implemented!"); throw std::logic_error("Not implemented!");
#else #else
int pair[2]; int pair[2];
...@@ -685,7 +685,7 @@ int set_socket_non_blocking(NetworkSocket s) { ...@@ -685,7 +685,7 @@ int set_socket_non_blocking(NetworkSocket s) {
#ifdef _WIN32 #ifdef _WIN32
u_long nonBlockingEnabled = 1; u_long nonBlockingEnabled = 1;
return ioctlsocket(s.data, FIONBIO, &nonBlockingEnabled); return ioctlsocket(s.data, FIONBIO, &nonBlockingEnabled);
#elif defined(__XROS__) #elif defined(__XROS__) || defined(__EMSCRIPTEN__)
throw std::logic_error("Not implemented!"); throw std::logic_error("Not implemented!");
#else #else
int flags = fcntl(s.data, F_GETFL, 0); int flags = fcntl(s.data, F_GETFL, 0);
...@@ -702,7 +702,7 @@ int set_socket_close_on_exec(NetworkSocket s) { ...@@ -702,7 +702,7 @@ int set_socket_close_on_exec(NetworkSocket s) {
return 0; return 0;
} }
return -1; return -1;
#elif defined(__XROS__) #elif defined(__XROS__) || defined(__EMSCRIPTEN__)
throw std::logic_error("Not implemented!"); throw std::logic_error("Not implemented!");
#else #else
return fcntl(s.data, F_SETFD, FD_CLOEXEC); return fcntl(s.data, F_SETFD, FD_CLOEXEC);
......
...@@ -81,7 +81,7 @@ struct sockaddr_un { ...@@ -81,7 +81,7 @@ struct sockaddr_un {
// Someone thought it would be a good idea // Someone thought it would be a good idea
// to define a field via a macro... // to define a field via a macro...
#undef s_host #undef s_host
#elif defined(__XROS__) #elif defined(__XROS__) || defined(__EMSCRIPTEN__)
// Stub this out for now. // Stub this out for now.
using nfds_t = int; using nfds_t = int;
using socklen_t = int; using socklen_t = int;
......
...@@ -31,7 +31,7 @@ struct NetworkSocket { ...@@ -31,7 +31,7 @@ struct NetworkSocket {
#ifdef _WIN32 #ifdef _WIN32
using native_handle_type = SOCKET; using native_handle_type = SOCKET;
static constexpr native_handle_type invalid_handle_value = INVALID_SOCKET; static constexpr native_handle_type invalid_handle_value = INVALID_SOCKET;
#elif defined(__XROS__) #elif defined(__XROS__) || defined(__EMSCRIPTEN__)
using native_handle_type = void*; using native_handle_type = void*;
static constexpr native_handle_type invalid_handle_value = nullptr; static constexpr native_handle_type invalid_handle_value = nullptr;
#else #else
......
...@@ -146,7 +146,7 @@ int SocketFileDescriptorMap::socketToFd(SOCKET sock) noexcept { ...@@ -146,7 +146,7 @@ int SocketFileDescriptorMap::socketToFd(SOCKET sock) noexcept {
} // namespace netops } // namespace netops
} // namespace folly } // namespace folly
#elif defined(__XROS__) #elif defined(__XROS__) || defined(__EMSCRIPTEN__)
// Stub this out for now. // Stub this out for now.
#include <stdexcept> #include <stdexcept>
......
...@@ -34,7 +34,7 @@ struct SocketFileDescriptorMap { ...@@ -34,7 +34,7 @@ struct SocketFileDescriptorMap {
static SOCKET fdToSocket(int fd) noexcept; static SOCKET fdToSocket(int fd) noexcept;
static int socketToFd(SOCKET sock) noexcept; static int socketToFd(SOCKET sock) noexcept;
#elif defined(__XROS__) #elif defined(__XROS__) || defined(__EMSCRIPTEN__)
static int close(int fd) noexcept; static int close(int fd) noexcept;
static int close(void* sock) noexcept; static int close(void* sock) noexcept;
......
...@@ -116,7 +116,7 @@ ssize_t sendto( ...@@ -116,7 +116,7 @@ ssize_t sendto(
int setsockopt( int setsockopt(
int s, int level, int optname, const char* optval, socklen_t optlen); int s, int level, int optname, const char* optval, socklen_t optlen);
#elif defined(__XROS__) #elif defined(__XROS__) || defined(__EMSCRIPTEN__)
// None of these are implemented or referenced right now. // None of these are implemented or referenced right now.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment