|
1 /* $Id$ */ |
|
2 |
|
3 #ifndef NETWORK_CORE_UDP_H |
|
4 #define NETWORK_CORE_UDP_H |
|
5 |
|
6 #ifdef ENABLE_NETWORK |
|
7 |
|
8 /** |
|
9 * @file udp.h Basic functions to receive and send UDP packets. |
|
10 */ |
|
11 |
|
12 ///** Sending/receiving of UDP packets **//// |
|
13 |
|
14 void NetworkSendUDP_Packet(SOCKET udp, Packet *p, struct sockaddr_in *recv); |
|
15 bool NetworkUDPListen(SOCKET *udp, uint32 host, uint16 port, bool broadcast); |
|
16 void NetworkUDPReceive(SOCKET udp); |
|
17 |
|
18 /** |
|
19 * Function that is called for every received UDP packet. |
|
20 * @param packet the received packet |
|
21 * @param client_addr the address of the sender of the packet |
|
22 */ |
|
23 void NetworkHandleUDPPacket(Packet *p, struct sockaddr_in *client_addr); |
|
24 |
|
25 |
|
26 ///** Sending/receiving of (large) chuncks of UDP packets **//// |
|
27 |
|
28 |
|
29 /** Enum with all types of UDP packets. The order MUST not be changed **/ |
|
30 enum { |
|
31 PACKET_UDP_CLIENT_FIND_SERVER, ///< Queries a game server for game information |
|
32 PACKET_UDP_SERVER_RESPONSE, ///< Reply of the game server with game information |
|
33 PACKET_UDP_CLIENT_DETAIL_INFO, ///< Queries a game server about details of the game, such as companies |
|
34 PACKET_UDP_SERVER_DETAIL_INFO, ///< Reply of the game server about details of the game, such as companies |
|
35 PACKET_UDP_SERVER_REGISTER, ///< Packet to register itself to the master server |
|
36 PACKET_UDP_MASTER_ACK_REGISTER, ///< Packet indicating registration has succedeed |
|
37 PACKET_UDP_CLIENT_GET_LIST, ///< Request for serverlist from master server |
|
38 PACKET_UDP_MASTER_RESPONSE_LIST, ///< Response from master server with server ip's + port's |
|
39 PACKET_UDP_SERVER_UNREGISTER, ///< Request to be removed from the server-list |
|
40 PACKET_UDP_CLIENT_GET_NEWGRFS, ///< Requests the name for a list of GRFs (GRF_ID and MD5) |
|
41 PACKET_UDP_SERVER_NEWGRFS, ///< Sends the list of NewGRF's requested. |
|
42 PACKET_UDP_END ///< Must ALWAYS be on the end of this list!! (period) |
|
43 }; |
|
44 |
|
45 void NetworkSend_GRFIdentifier(Packet *p, const GRFConfig *c); |
|
46 void NetworkSend_NetworkGameInfo(Packet *p, const NetworkGameInfo *info); |
|
47 |
|
48 void NetworkRecv_GRFIdentifier(NetworkClientState *cs, Packet *p, GRFConfig *c); |
|
49 void NetworkRecv_NetworkGameInfo(NetworkClientState *cs, Packet *p, NetworkGameInfo *info); |
|
50 |
|
51 /** |
|
52 * Function that is called for every GRFConfig that is read when receiving |
|
53 * a NetworkGameInfo. Only grfid and md5sum are set, the rest is zero. This |
|
54 * function must set all appropriate fields. This GRF is later appended to |
|
55 * the grfconfig list of the NetworkGameInfo. |
|
56 * @param config the GRF to handle |
|
57 */ |
|
58 void HandleIncomingNetworkGameInfoGRFConfig(GRFConfig *config); |
|
59 |
|
60 #endif /* ENABLE_NETWORK */ |
|
61 |
|
62 #endif /* NETWORK_CORE_UDP_H */ |