summaryrefslogtreecommitdiffhomepage
path: root/NetEx
diff options
context:
space:
mode:
authorAki <please@ignore.pl>2022-03-31 23:13:58 +0200
committerAki <please@ignore.pl>2022-03-31 23:13:58 +0200
commitac54470e8aeddc2acf9ae215241c77a2bf7e33e3 (patch)
tree9bf534c0c2dfc319cbdfdf8202a0e98d455e6f09 /NetEx
parent28873b2e25752a85b795317cce1904dd1872e401 (diff)
downloadstarshatter-ac54470e8aeddc2acf9ae215241c77a2bf7e33e3.zip
starshatter-ac54470e8aeddc2acf9ae215241c77a2bf7e33e3.tar.gz
starshatter-ac54470e8aeddc2acf9ae215241c77a2bf7e33e3.tar.bz2
Reformatted NetSock closer to the rest of NetEx
Diffstat (limited to 'NetEx')
-rw-r--r--NetEx/NetSock.cpp53
1 files changed, 31 insertions, 22 deletions
diff --git a/NetEx/NetSock.cpp b/NetEx/NetSock.cpp
index 3d3da63..12778b7 100644
--- a/NetEx/NetSock.cpp
+++ b/NetEx/NetSock.cpp
@@ -17,10 +17,10 @@
#include <winsock2.h>
using socklen_t = int;
#else
-#include <sys/socket.h>
+#include <fcntl.h>
#include <sys/select.h>
+#include <sys/socket.h>
#include <unistd.h>
-#include <fcntl.h>
#define INVALID_SOCKET -1
#define SOCKET_ERROR -1
#define WSAENETDOWN ENETDOWN
@@ -34,18 +34,21 @@ using socklen_t = int;
#endif
#include <cstdint>
+#include <cstring>
#include "NetAddr.h"
#include "NetLayer.h"
#include "Text.h"
-// +-------------------------------------------------------------------+
/**
* Server-side socket constructor
*/
-NetSock::NetSock(bool str)
- : stream(str), closed(false), stat(0), current_timeout(9999)
+NetSock::NetSock(bool str) :
+ stream(str),
+ closed(false),
+ stat(0),
+ current_timeout(9999)
{
if (stream)
s = ::socket(AF_INET, SOCK_STREAM, 0);
@@ -53,23 +56,33 @@ NetSock::NetSock(bool str)
s = ::socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
}
+
/**
* Server-side socket constructor
*
* PRIVATE: used only by the accept call to build a socket for
* a client connection to this server
*/
-NetSock::NetSock(int sock, bool str)
- : s(sock), stream(str), closed(false), stat(0), current_timeout(9999)
-{ }
+NetSock::NetSock(int sock, bool str) :
+ s(sock),
+ stream(str),
+ closed(false),
+ stat(0),
+ current_timeout(9999)
+{
+}
+
/**
* Client-side socket constructor
*
* Will connect to server at "addr"
*/
-NetSock::NetSock(const NetAddr& addr, bool str)
- : stream(str), closed(false), stat(0), current_timeout(9999)
+NetSock::NetSock(const NetAddr& addr, bool str) :
+ stream(str),
+ closed(false),
+ stat(0),
+ current_timeout(9999)
{
if (stream)
s = ::socket(AF_INET, SOCK_STREAM, 0);
@@ -79,12 +92,12 @@ NetSock::NetSock(const NetAddr& addr, bool str)
connect(addr);
}
+
NetSock::~NetSock()
{
close();
}
-// +--------------------------------------------------------------------+
int
NetSock::bind(const NetAddr& addr)
@@ -93,6 +106,7 @@ NetSock::bind(const NetAddr& addr)
return stat = ::bind(s, addr.GetSockAddr(), addr.GetSockAddrLength());
}
+
int
NetSock::connect(const NetAddr& addr)
{
@@ -100,6 +114,7 @@ NetSock::connect(const NetAddr& addr)
return stat = ::connect(s, addr.GetSockAddr(), addr.GetSockAddrLength());
}
+
int
NetSock::listen(int max_connections)
{
@@ -107,6 +122,7 @@ NetSock::listen(int max_connections)
return stat = ::listen(s, max_connections);
}
+
NetSock*
NetSock::accept(NetAddr* addr)
{
@@ -134,7 +150,6 @@ NetSock::accept(NetAddr* addr)
return new NetSock(conn, stream);
}
-// +--------------------------------------------------------------------+
int
NetSock::send(Text msg)
@@ -143,12 +158,13 @@ NetSock::send(Text msg)
return stat = ::send(s, msg.data(), msg.length(), 0);
}
+
Text
NetSock::recv()
{
if (closed || s == INVALID_SOCKET) return "";
- static char rbuf[8192];
+ thread_local char rbuf[8192];
int rlen = -1;
if (stream) {
@@ -188,8 +204,6 @@ NetSock::recv()
}
-// +--------------------------------------------------------------------+
-
int
NetSock::sendto(Text msg, const NetAddr& dest)
{
@@ -198,12 +212,13 @@ NetSock::sendto(Text msg, const NetAddr& dest)
0, dest.GetSockAddr(), dest.GetSockAddrLength());
}
+
Text
NetSock::recvfrom(NetAddr* a)
{
if (closed || s == INVALID_SOCKET) return "";
- static char rbuf[4096];
+ thread_local char rbuf[4096];
int rlen = 0;
if (a) {
@@ -227,7 +242,6 @@ NetSock::recvfrom(NetAddr* a)
return Text(rbuf, rlen);
}
-// +--------------------------------------------------------------------+
int
NetSock::select(SELECT_TYPE t, long seconds, long microseconds)
@@ -252,7 +266,6 @@ NetSock::select(SELECT_TYPE t, long seconds, long microseconds)
return 0;
}
-// +--------------------------------------------------------------------+
int
NetSock::set_timeout(int msecs)
@@ -305,7 +318,6 @@ NetSock::set_timeout(int msecs)
return 1;
}
-// +--------------------------------------------------------------------+
int
NetSock::shutdown_input()
@@ -319,7 +331,6 @@ NetSock::shutdown_input()
return 0;
}
-// +--------------------------------------------------------------------+
int
NetSock::shutdown_output()
@@ -333,7 +344,6 @@ NetSock::shutdown_output()
return 0;
}
-// +--------------------------------------------------------------------+
int
NetSock::close()
@@ -353,7 +363,6 @@ NetSock::close()
return 0;
}
-// +--------------------------------------------------------------------+
std::uint32_t
NetSock::max_packet_size() const