diff options
author | Andrei Karas <akaras@inbox.ru> | 2013-10-29 23:36:53 +0300 |
---|---|---|
committer | Andrei Karas <akaras@inbox.ru> | 2013-10-29 23:39:29 +0300 |
commit | 7f2484d82112851dbeba83afd18790a58b03599d (patch) | |
tree | 6449022bbae8a55825febc7b08e3d4095f1de64f /src/net | |
parent | 24179041d619875bda96eb94307b1f3dd64e6add (diff) | |
download | manaplus-7f2484d82112851dbeba83afd18790a58b03599d.tar.gz manaplus-7f2484d82112851dbeba83afd18790a58b03599d.tar.bz2 manaplus-7f2484d82112851dbeba83afd18790a58b03599d.tar.xz manaplus-7f2484d82112851dbeba83afd18790a58b03599d.zip |
Initial porting to NACL by Vasily_Makarov.
Diffstat (limited to 'src/net')
-rw-r--r-- | src/net/nacltcpnet.cpp | 116 | ||||
-rw-r--r-- | src/net/nacltcpnet.h | 71 | ||||
-rw-r--r-- | src/net/sdltcpnet.cpp | 4 | ||||
-rw-r--r-- | src/net/sdltcpnet.h | 3 |
4 files changed, 194 insertions, 0 deletions
diff --git a/src/net/nacltcpnet.cpp b/src/net/nacltcpnet.cpp new file mode 100644 index 000000000..ccdb5a3f6 --- /dev/null +++ b/src/net/nacltcpnet.cpp @@ -0,0 +1,116 @@ +/* + * The ManaPlus Client + * Copyright (C) 2013 The ManaPlus Developers + * + * This file is part of The ManaPlus Client. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#if defined __native_client__ + +#include "net/sdltcpnet.h" + +#if defined __linux__ || defined __linux +#include "logger.h" + +#include <sys/socket.h> + +#if defined(M_TCPOK) && !defined(ANDROID) +#include <netinet/in.h> +#include <netdb.h> +#include <linux/tcp.h> +#else +#include <netinet/in.h> +#include <netinet/tcp.h> +#include <netdb.h> +#include <netinet/tcp.h> +// Use linear timeouts for thin streams +#define TCP_THIN_LINEAR_TIMEOUTS 16 +// Fast retrans. after 1 dupack +#define TCP_THIN_DUPACK 17 +#endif + +#endif + +#include "debug.h" + +struct _SDLNet_SocketSet +{ +}; + +struct _TCPsocket +{ + int ready; + int channel; + IPaddress remoteAddress; + IPaddress localAddress; + int sflag; +}; + +void TcpNet::init() +{ +} + +void TcpNet::quit() +{ +} + +void TcpNet::closeSocket(const TcpNet::Socket socket) +{ +} + +int TcpNet::send(const TcpNet::Socket sock, const void *const data, + const int len) +{ +} + +const char *TcpNet::getError() +{ +} + +int TcpNet::resolveHost(IPaddress *const address, const char *const host, + const Uint16 port) +{ +} + +TcpNet::Socket TcpNet::open(IPaddress *const ip) +{ +} + +TcpNet::SocketSet TcpNet::allocSocketSet(const int maxsockets) +{ +} + +int TcpNet::addSocket(const TcpNet::SocketSet set, const TcpNet::Socket sock) +{ +} + +int TcpNet::checkSockets(const TcpNet::SocketSet set, const Uint32 timeout) +{ +} + +int TcpNet::recv(const TcpNet::Socket sock, void *const data, const int maxlen) +{ +} + +int TcpNet::delSocket(const TcpNet::SocketSet set, const TcpNet::Socket sock) +{ +} + +void TcpNet::freeSocketSet(const TcpNet::SocketSet set) +{ +} + +#endif // __native_client__ diff --git a/src/net/nacltcpnet.h b/src/net/nacltcpnet.h new file mode 100644 index 000000000..770384e7e --- /dev/null +++ b/src/net/nacltcpnet.h @@ -0,0 +1,71 @@ +/* + * The ManaPlus Client + * Copyright (C) 2013 The ManaPlus Developers + * + * This file is part of The ManaPlus Client. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#ifndef NET_NACLTCPNET_H +#define NET_NACLTCPNET_H + +#if defined __native_client__ + +#include <SDL.h> +#include "localconsts.h" + +typedef struct { + Uint32 host; /* 32-bit IPv4 host address */ + Uint16 port; /* 16-bit protocol port */ +} IPaddress; + +typedef struct _SDLNet_SocketSet *SDLNet_SocketSet; +typedef struct _TCPsocket *TCPsocket; + +namespace TcpNet +{ + typedef ::SDLNet_SocketSet SocketSet; + typedef ::TCPsocket Socket; + + void init(); + + void quit(); + + void closeSocket(const TcpNet::Socket socket); + + int send(const TcpNet::Socket sock, const void *const data, const int len); + + const char *getError(); + + int resolveHost(IPaddress *const address, const char *const host, + const Uint16 port); + + TcpNet::Socket open(IPaddress *const ip); + + SocketSet allocSocketSet(const int maxsockets); + + int addSocket(const TcpNet::SocketSet set, const TcpNet::Socket sock); + + int checkSockets(const TcpNet::SocketSet set, const Uint32 timeout); + + int recv(const TcpNet::Socket sock, void *const data, const int maxlen); + + int delSocket(const TcpNet::SocketSet set, const TcpNet::Socket sock); + + void freeSocketSet(const TcpNet::SocketSet set); +} // namespace TcpNet + +#endif // __native_client__ +#endif // NET_NACLTCPNET_H diff --git a/src/net/sdltcpnet.cpp b/src/net/sdltcpnet.cpp index 4ea659ecf..4d708ea68 100644 --- a/src/net/sdltcpnet.cpp +++ b/src/net/sdltcpnet.cpp @@ -18,6 +18,8 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. */ +#if !defined __native_client__ + #include "net/sdltcpnet.h" #if defined __linux__ || defined __linux @@ -150,3 +152,5 @@ void TcpNet::freeSocketSet(const TcpNet::SocketSet set) { SDLNet_FreeSocketSet(set); } + +#endif // __native_client__ diff --git a/src/net/sdltcpnet.h b/src/net/sdltcpnet.h index a61c218b8..04c80e71a 100644 --- a/src/net/sdltcpnet.h +++ b/src/net/sdltcpnet.h @@ -21,6 +21,8 @@ #ifndef NET_SDLTCPNET_H #define NET_SDLTCPNET_H +#if !defined __native_client__ + #include <SDL_net.h> #include "localconsts.h" @@ -58,4 +60,5 @@ namespace TcpNet void freeSocketSet(const TcpNet::SocketSet set); } // namespace TcpNet +#endif // __native_client__ #endif // NET_SDLTCPNET_H |