From 7686587f02ff76bb7d6f899b989701adeda5b6e4 Mon Sep 17 00:00:00 2001 From: planetmaker Date: Thu, 11 Jul 2013 20:31:39 +0000 Subject: (svn r25588) -Feature [FS#5643]: PING and PONG packets for admin port (Xaroth) --- src/network/core/tcp_admin.h | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'src/network/core/tcp_admin.h') diff --git a/src/network/core/tcp_admin.h b/src/network/core/tcp_admin.h index d642deb4c..72c2e1160 100644 --- a/src/network/core/tcp_admin.h +++ b/src/network/core/tcp_admin.h @@ -33,6 +33,7 @@ enum PacketAdminType { ADMIN_PACKET_ADMIN_CHAT, ///< The admin sends a chat message to be distributed. ADMIN_PACKET_ADMIN_RCON, ///< The admin sends a remote console command. ADMIN_PACKET_ADMIN_GAMESCRIPT, ///< The admin sends a JSON string for the GameScript. + ADMIN_PACKET_ADMIN_PING, ///< The admin sends a ping to the server, expecting a ping-reply (PONG) packet. ADMIN_PACKET_SERVER_FULL = 100, ///< The server tells the admin it cannot accept the admin. ADMIN_PACKET_SERVER_BANNED, ///< The server tells the admin it is banned. @@ -61,6 +62,7 @@ enum PacketAdminType { ADMIN_PACKET_SERVER_CMD_LOGGING, ///< The server gives the admin copies of incoming command packets. ADMIN_PACKET_SERVER_GAMESCRIPT, ///< The server gives the admin information from the GameScript in JSON. ADMIN_PACKET_SERVER_RCON_END, ///< The server indicates that the remote console command has completed. + ADMIN_PACKET_SERVER_PONG, ///< The server replies to a ping request from the admin. INVALID_ADMIN_PACKET = 0xFF, ///< An invalid marker for admin packets. }; @@ -181,6 +183,14 @@ protected: */ virtual NetworkRecvStatus Receive_ADMIN_GAMESCRIPT(Packet *p); + /** + * Ping the server, requiring the server to reply with a pong packet. + * uint32 Integer value to pass to the server, which is quoted in the reply. + * @param p The packet that was just received. + * @return The state the network should have. + */ + virtual NetworkRecvStatus Receive_ADMIN_PING(Packet *p); + /** * The server is full (connection gets closed). * @param p The packet that was just received. @@ -455,6 +465,14 @@ protected: */ virtual NetworkRecvStatus Receive_SERVER_CMD_LOGGING(Packet *p); + /** + * Send a ping-reply (pong) to the admin that sent us the ping packet. + * uint32 Integer identifier - should be the same as read from the admins ping packet. + * @param p The packet that was just received. + * @return The state the network should have. + */ + virtual NetworkRecvStatus Receive_SERVER_PONG(Packet *p); + /** * Notify the admin connection that the rcon command has finished. * string The command as requested by the admin connection. -- cgit v1.2.3-54-g00ecf