summaryrefslogtreecommitdiff
path: root/src/network/network_server.h
diff options
context:
space:
mode:
authorrubidium <rubidium@openttd.org>2010-10-15 19:58:56 +0000
committerrubidium <rubidium@openttd.org>2010-10-15 19:58:56 +0000
commit9858d699a3c39be2e3a547d59163178012365598 (patch)
treeb0d10b23b4d41471d8ba846ca1805614acfec187 /src/network/network_server.h
parentbda26d03b509c3783596c0b3431ca0c8fd7c9990 (diff)
downloadopenttd-9858d699a3c39be2e3a547d59163178012365598.tar.xz
(svn r20935) -Codechange: only let the server side use a pool of connected sockets
Diffstat (limited to 'src/network/network_server.h')
-rw-r--r--src/network/network_server.h10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/network/network_server.h b/src/network/network_server.h
index 2e878dc5f..d943b1fa0 100644
--- a/src/network/network_server.h
+++ b/src/network/network_server.h
@@ -16,8 +16,13 @@
#include "network_internal.h"
+class ServerNetworkGameSocketHandler;
+typedef ServerNetworkGameSocketHandler NetworkClientSocket;
+typedef Pool<NetworkClientSocket, ClientIndex, 8, MAX_CLIENT_SLOTS> NetworkClientSocketPool;
+extern NetworkClientSocketPool _networkclientsocket_pool;
+
/** Class for handling the server side of the game connection. */
-class ServerNetworkGameSocketHandler : public NetworkGameSocketHandler {
+class ServerNetworkGameSocketHandler : public NetworkClientSocketPool::PoolItem<&_networkclientsocket_pool>, public NetworkGameSocketHandler {
protected:
DECLARE_GAME_RECEIVE_COMMAND(PACKET_CLIENT_JOIN);
DECLARE_GAME_RECEIVE_COMMAND(PACKET_CLIENT_COMPANY_INFO);
@@ -54,6 +59,9 @@ DEF_SERVER_SEND_COMMAND_PARAM(PACKET_SERVER_MOVE)(NetworkClientSocket *cs, uint1
void NetworkServer_ReadPackets(NetworkClientSocket *cs);
void NetworkServer_Tick(bool send_frame);
+#define FOR_ALL_CLIENT_SOCKETS_FROM(var, start) FOR_ALL_ITEMS_FROM(NetworkClientSocket, clientsocket_index, var, start)
+#define FOR_ALL_CLIENT_SOCKETS(var) FOR_ALL_CLIENT_SOCKETS_FROM(var, 0)
+
#else /* ENABLE_NETWORK */
/* Network function stubs when networking is disabled */