src/network/network_data.h
author rubidium
Tue, 09 Jan 2007 14:48:21 +0000
changeset 5572 a98ffa55b19c
parent 5475 2e6990a8c7c4
child 5587 167d9a91ef02
permissions -rw-r--r--
(svn r8000) -Codechange: drop UDP packets when their internal size does not match the received size. If that is the case, the packet was not received in one piece (or got somehow mangled with another packet), which will cause us to drop the packet later on because we are (for example) trying to read beyond the end of the packet.
2186
db48cf29b983 (svn r2701) Insert Id tags into all source files
tron
parents: 1977
diff changeset
     1
/* $Id$ */
db48cf29b983 (svn r2701) Insert Id tags into all source files
tron
parents: 1977
diff changeset
     2
543
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
     3
#ifndef NETWORK_DATA_H
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
     4
#define NETWORK_DATA_H
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
     5
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
     6
// Is the network enabled?
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
     7
#ifdef ENABLE_NETWORK
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
     8
5469
7edfc643abbc (svn r7751) -Codechange: move network_* to a new network map. Furthermore move the low level network functions to network/core, so they can be reused by the masterserver and website-serverlist-updater.
rubidium
parents: 5339
diff changeset
     9
#include "../openttd.h"
7edfc643abbc (svn r7751) -Codechange: move network_* to a new network map. Furthermore move the low level network functions to network/core, so they can be reused by the masterserver and website-serverlist-updater.
rubidium
parents: 5339
diff changeset
    10
#include "network.h"
7edfc643abbc (svn r7751) -Codechange: move network_* to a new network map. Furthermore move the low level network functions to network/core, so they can be reused by the masterserver and website-serverlist-updater.
rubidium
parents: 5339
diff changeset
    11
#include "core/os_abstraction.h"
7edfc643abbc (svn r7751) -Codechange: move network_* to a new network map. Furthermore move the low level network functions to network/core, so they can be reused by the masterserver and website-serverlist-updater.
rubidium
parents: 5339
diff changeset
    12
#include "core/config.h"
7edfc643abbc (svn r7751) -Codechange: move network_* to a new network map. Furthermore move the low level network functions to network/core, so they can be reused by the masterserver and website-serverlist-updater.
rubidium
parents: 5339
diff changeset
    13
#include "core/packet.h"
7edfc643abbc (svn r7751) -Codechange: move network_* to a new network map. Furthermore move the low level network functions to network/core, so they can be reused by the masterserver and website-serverlist-updater.
rubidium
parents: 5339
diff changeset
    14
543
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    15
#define MAX_TEXT_MSG_LEN 1024 /* long long long long sentences :-) */
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    16
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    17
// The client-info-server-index is always 1
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    18
#define NETWORK_SERVER_INDEX 1
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    19
#define NETWORK_EMPTY_INDEX 0
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    20
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    21
typedef struct CommandPacket {
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    22
	struct CommandPacket *next;
2498
3ed05caa4449 (svn r3024) -Codechange: Another batch of replacements of int/uint/int16/byte/-1 with proper types and constants
tron
parents: 2436
diff changeset
    23
	PlayerID player; /// player that is executing the command
1804
fbe724472bb4 (svn r2308) - Fix: enforce server-only and/or offline commands by giving them flags in the process table. This also fixes bug "[ 1190944 ] Many commands not checked for security"
Darkvater
parents: 1466
diff changeset
    24
	uint32 cmd;    /// command being executed
fbe724472bb4 (svn r2308) - Fix: enforce server-only and/or offline commands by giving them flags in the process table. This also fixes bug "[ 1190944 ] Many commands not checked for security"
Darkvater
parents: 1466
diff changeset
    25
	uint32 p1;     /// parameter p1
fbe724472bb4 (svn r2308) - Fix: enforce server-only and/or offline commands by giving them flags in the process table. This also fixes bug "[ 1190944 ] Many commands not checked for security"
Darkvater
parents: 1466
diff changeset
    26
	uint32 p2;     /// parameter p2
1977
37bbebf94434 (svn r2483) Replace almost 500 "uint tile" (and variants) with "TileIndex tile"
tron
parents: 1891
diff changeset
    27
	TileIndex tile; /// tile command being executed on
1820
d03c56850dc2 (svn r2324) Introduce _cmd_text for passing strings with a command instead of abusing _decode_parameters as text buffer. This should prevent several possible buffer overruns and is a bit cleaner to use. As bonus it reduces the size of most command packets by 79 bytes.
tron
parents: 1804
diff changeset
    28
	char text[80];
1804
fbe724472bb4 (svn r2308) - Fix: enforce server-only and/or offline commands by giving them flags in the process table. This also fixes bug "[ 1190944 ] Many commands not checked for security"
Darkvater
parents: 1466
diff changeset
    29
	uint32 frame;  /// the frame in which this packet is executed
fbe724472bb4 (svn r2308) - Fix: enforce server-only and/or offline commands by giving them flags in the process table. This also fixes bug "[ 1190944 ] Many commands not checked for security"
Darkvater
parents: 1466
diff changeset
    30
	byte callback; /// any callback function executed upon successful completion of the command
543
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    31
} CommandPacket;
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    32
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    33
typedef enum {
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    34
	STATUS_INACTIVE,
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    35
	STATUS_AUTH, // This means that the client is authorized
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    36
	STATUS_MAP_WAIT, // This means that the client is put on hold because someone else is getting the map
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    37
	STATUS_MAP,
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    38
	STATUS_DONE_MAP,
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    39
	STATUS_PRE_ACTIVE,
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    40
	STATUS_ACTIVE,
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    41
} ClientStatus;
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    42
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    43
typedef enum {
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    44
	MAP_PACKET_START,
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    45
	MAP_PACKET_NORMAL,
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    46
	MAP_PACKET_END,
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    47
} MapPacket;
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    48
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    49
typedef enum {
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    50
	NETWORK_RECV_STATUS_OKAY,
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    51
	NETWORK_RECV_STATUS_DESYNC,
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    52
	NETWORK_RECV_STATUS_SAVEGAME,
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    53
	NETWORK_RECV_STATUS_CONN_LOST,
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    54
	NETWORK_RECV_STATUS_MALFORMED_PACKET,
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    55
	NETWORK_RECV_STATUS_SERVER_ERROR, // The server told us we made an error
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    56
	NETWORK_RECV_STATUS_SERVER_FULL,
841
4874b9ce2765 (svn r1322) -Add: banning system (mostly tnx to guru3)
truelight
parents: 764
diff changeset
    57
	NETWORK_RECV_STATUS_SERVER_BANNED,
543
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    58
	NETWORK_RECV_STATUS_CLOSE_QUERY, // Done quering the server
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    59
} NetworkRecvStatus;
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    60
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    61
typedef enum {
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    62
	NETWORK_ERROR_GENERAL, // Try to use thisone like never
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    63
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    64
	// Signals from clients
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    65
	NETWORK_ERROR_DESYNC,
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    66
	NETWORK_ERROR_SAVEGAME_FAILED,
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    67
	NETWORK_ERROR_CONNECTION_LOST,
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    68
	NETWORK_ERROR_ILLEGAL_PACKET,
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    69
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    70
	// Signals from servers
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    71
	NETWORK_ERROR_NOT_AUTHORIZED,
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    72
	NETWORK_ERROR_NOT_EXPECTED,
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    73
	NETWORK_ERROR_WRONG_REVISION,
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    74
	NETWORK_ERROR_NAME_IN_USE,
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    75
	NETWORK_ERROR_WRONG_PASSWORD,
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    76
	NETWORK_ERROR_PLAYER_MISMATCH, // Happens in CLIENT_COMMAND
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    77
	NETWORK_ERROR_KICKED,
748
fa61195ee8a8 (svn r1204) -Add: [Network] Added some cheaters-protection (money-cheat mostly)
truelight
parents: 722
diff changeset
    78
	NETWORK_ERROR_CHEATER,
2879
365ecd52f2db (svn r3427) - Feature: Allow seeing and setting the maximum amount of companies and spectators for a server. This can be changed/viewed during runtime as well in the console.
Darkvater
parents: 2859
diff changeset
    79
	NETWORK_ERROR_FULL,
543
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    80
} NetworkErrorCode;
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    81
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    82
// Actions that can be used for NetworkTextMessage
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    83
typedef enum {
722
f420fa9bd521 (svn r1174) -Fix: [Network] All strings can now be translated (no more hardcoded strings)
truelight
parents: 716
diff changeset
    84
	NETWORK_ACTION_JOIN,
f420fa9bd521 (svn r1174) -Fix: [Network] All strings can now be translated (no more hardcoded strings)
truelight
parents: 716
diff changeset
    85
	NETWORK_ACTION_LEAVE,
4944
f597859bba38 (svn r6932) -Codechange: Send server messages with format NETWORK_ACTION_SERVER_MESSAGE so it is
Darkvater
parents: 4912
diff changeset
    86
	NETWORK_ACTION_SERVER_MESSAGE,
543
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    87
	NETWORK_ACTION_CHAT,
4906
935e6280c093 (svn r6876) -Codechange: Change the naming of _PLAYER in DESTTYPE_PLAYER/NETWORK_ACTION_CHAT_PLAYER
Darkvater
parents: 4887
diff changeset
    88
	NETWORK_ACTION_CHAT_COMPANY,
543
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    89
	NETWORK_ACTION_CHAT_CLIENT,
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    90
	NETWORK_ACTION_GIVE_MONEY,
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    91
	NETWORK_ACTION_NAME_CHANGE,
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    92
} NetworkAction;
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    93
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    94
typedef enum {
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    95
	NETWORK_GAME_PASSWORD,
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    96
	NETWORK_COMPANY_PASSWORD,
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    97
} NetworkPasswordType;
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    98
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
    99
// To keep the clients all together
5469
7edfc643abbc (svn r7751) -Codechange: move network_* to a new network map. Furthermore move the low level network functions to network/core, so they can be reused by the masterserver and website-serverlist-updater.
rubidium
parents: 5339
diff changeset
   100
struct NetworkClientState { // Typedeffed in network_core/packet.h
1466
93e67e9654c5 (svn r1970) Fix some warnings which Cygwin showed
tron
parents: 1441
diff changeset
   101
	SOCKET socket;
543
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
   102
	uint16 index;
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
   103
	uint32 last_frame;
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
   104
	uint32 last_frame_server;
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
   105
	byte lag_test; // This byte is used for lag-testing the client
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
   106
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
   107
	ClientStatus status;
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
   108
	bool writable; // is client ready to write to?
4880
aac84a9dcd03 (svn r6816) -Codechange: Some coding style, variable localization, const correctness.
Darkvater
parents: 4326
diff changeset
   109
	bool has_quit;
543
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
   110
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
   111
	Packet *packet_queue; // Packets that are awaiting delivery
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
   112
	Packet *packet_recv; // Partially received packet
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
   113
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
   114
	CommandPacket *command_queue; // The command-queue awaiting delivery
5469
7edfc643abbc (svn r7751) -Codechange: move network_* to a new network map. Furthermore move the low level network functions to network/core, so they can be reused by the masterserver and website-serverlist-updater.
rubidium
parents: 5339
diff changeset
   115
};
543
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
   116
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
   117
typedef enum {
4887
71da70810c22 (svn r6824) -Feature: Change the functionality of the chat window. SHIFT+ENTER (SHIFT+T)
Darkvater
parents: 4883
diff changeset
   118
	DESTTYPE_BROADCAST, ///< Send message/notice to all players (All)
4906
935e6280c093 (svn r6876) -Codechange: Change the naming of _PLAYER in DESTTYPE_PLAYER/NETWORK_ACTION_CHAT_PLAYER
Darkvater
parents: 4887
diff changeset
   119
	DESTTYPE_TEAM,    ///< Send message/notice to everyone playing the same company (Team)
4887
71da70810c22 (svn r6824) -Feature: Change the functionality of the chat window. SHIFT+ENTER (SHIFT+T)
Darkvater
parents: 4883
diff changeset
   120
	DESTTYPE_CLIENT,    ///< Send message/notice to only a certain player (Private)
543
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
   121
} DestType;
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
   122
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
   123
CommandPacket *_local_command_queue;
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
   124
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
   125
SOCKET _udp_client_socket; // udp client socket
764
7e1e17b7c7d4 (svn r1227) -Add: Ingame Server-list (select Internet, then Find Servers)
truelight
parents: 748
diff changeset
   126
SOCKET _udp_server_socket; // udp server socket
7e1e17b7c7d4 (svn r1227) -Add: Ingame Server-list (select Internet, then Find Servers)
truelight
parents: 748
diff changeset
   127
SOCKET _udp_master_socket; // udp master socket
543
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
   128
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
   129
// Here we keep track of the clients
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
   130
//  (and the client uses [0] for his own communication)
716
8af847728d5b (svn r1168) -Cleanup: [Network] Cleaned the network code a bit. Added 'const'
truelight
parents: 668
diff changeset
   131
NetworkClientState _clients[MAX_CLIENTS];
543
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
   132
#define DEREF_CLIENT(i) (&_clients[i])
716
8af847728d5b (svn r1168) -Cleanup: [Network] Cleaned the network code a bit. Added 'const'
truelight
parents: 668
diff changeset
   133
// This returns the NetworkClientInfo from a NetworkClientState
543
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
   134
#define DEREF_CLIENT_INFO(cs) (&_network_client_info[cs - _clients])
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
   135
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
   136
// Macros to make life a bit more easier
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
   137
#define DEF_CLIENT_RECEIVE_COMMAND(type) NetworkRecvStatus NetworkPacketReceive_ ## type ## _command(Packet *p)
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
   138
#define DEF_CLIENT_SEND_COMMAND(type) void NetworkPacketSend_ ## type ## _command(void)
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
   139
#define DEF_CLIENT_SEND_COMMAND_PARAM(type) void NetworkPacketSend_ ## type ## _command
716
8af847728d5b (svn r1168) -Cleanup: [Network] Cleaned the network code a bit. Added 'const'
truelight
parents: 668
diff changeset
   140
#define DEF_SERVER_RECEIVE_COMMAND(type) void NetworkPacketReceive_ ## type ## _command(NetworkClientState *cs, Packet *p)
8af847728d5b (svn r1168) -Cleanup: [Network] Cleaned the network code a bit. Added 'const'
truelight
parents: 668
diff changeset
   141
#define DEF_SERVER_SEND_COMMAND(type) void NetworkPacketSend_ ## type ## _command(NetworkClientState *cs)
543
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
   142
#define DEF_SERVER_SEND_COMMAND_PARAM(type) void NetworkPacketSend_ ## type ## _command
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
   143
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
   144
#define SEND_COMMAND(type) NetworkPacketSend_ ## type ## _command
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
   145
#define RECEIVE_COMMAND(type) NetworkPacketReceive_ ## type ## _command
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
   146
4883
c9c7d15c0b0b (svn r6820) -Codechange: Some more const correctness, coding style.
Darkvater
parents: 4880
diff changeset
   147
#define FOR_ALL_CLIENTS(cs) for (cs = _clients; cs != endof(_clients) && cs->socket != INVALID_SOCKET; cs++)
c9c7d15c0b0b (svn r6820) -Codechange: Some more const correctness, coding style.
Darkvater
parents: 4880
diff changeset
   148
#define FOR_ALL_ACTIVE_CLIENT_INFOS(ci) for (ci = _network_client_info; ci != endof(_network_client_info); ci++) if (ci->client_index != NETWORK_EMPTY_INDEX)
543
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
   149
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
   150
void NetworkExecuteCommand(CommandPacket *cp);
716
8af847728d5b (svn r1168) -Cleanup: [Network] Cleaned the network code a bit. Added 'const'
truelight
parents: 668
diff changeset
   151
void NetworkAddCommandQueue(NetworkClientState *cs, CommandPacket *cp);
543
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
   152
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
   153
// from network.c
716
8af847728d5b (svn r1168) -Cleanup: [Network] Cleaned the network code a bit. Added 'const'
truelight
parents: 668
diff changeset
   154
void NetworkCloseClient(NetworkClientState *cs);
722
f420fa9bd521 (svn r1174) -Fix: [Network] All strings can now be translated (no more hardcoded strings)
truelight
parents: 716
diff changeset
   155
void CDECL NetworkTextMessage(NetworkAction action, uint16 color, bool self_send, const char *name, const char *str, ...);
716
8af847728d5b (svn r1168) -Cleanup: [Network] Cleaned the network code a bit. Added 'const'
truelight
parents: 668
diff changeset
   156
void NetworkGetClientName(char *clientname, size_t size, const NetworkClientState *cs);
8af847728d5b (svn r1168) -Cleanup: [Network] Cleaned the network code a bit. Added 'const'
truelight
parents: 668
diff changeset
   157
uint NetworkCalculateLag(const NetworkClientState *cs);
1093
4fdc46eaf423 (svn r1594) Convert all undefined parameter lists to (void) and add the appropriate warning flags in the Makefile
tron
parents: 1026
diff changeset
   158
byte NetworkGetCurrentLanguageIndex(void);
543
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
   159
NetworkClientInfo *NetworkFindClientInfoFromIndex(uint16 client_index);
2859
ed471404f531 (svn r3407) - Feature: Kick and ban now with IP numbers.
Darkvater
parents: 2498
diff changeset
   160
NetworkClientInfo *NetworkFindClientInfoFromIP(const char *ip);
716
8af847728d5b (svn r1168) -Cleanup: [Network] Cleaned the network code a bit. Added 'const'
truelight
parents: 668
diff changeset
   161
NetworkClientState *NetworkFindClientStateFromIndex(uint16 client_index);
543
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
   162
unsigned long NetworkResolveHost(const char *hostname);
4912
0f51b47cb983 (svn r6884) -Codechange: Add strict bounds checking in string formatting system.
Darkvater
parents: 4906
diff changeset
   163
char* GetNetworkErrorMsg(char* buf, NetworkErrorCode err, const char* last);
543
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
   164
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
   165
#endif /* ENABLE_NETWORK */
946badd71033 (svn r942) -Merged branch/network back into the trunk
truelight
parents:
diff changeset
   166
2436
7d5df545bd5d (svn r2962) - const correctness for all Get* functions and most Draw* functions that don't change their pointer parameters
Darkvater
parents: 2186
diff changeset
   167
#endif /* NETWORK_DATA_H */