network/core/udp.h
branchcustombridgeheads
changeset 5642 bfa6074e2833
equal deleted inserted replaced
5641:d4d00a16ef26 5642:bfa6074e2833
       
     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 */