diff options
Diffstat (limited to 'src/network/core')
-rw-r--r-- | src/network/core/tcp_coordinator.cpp | 4 | ||||
-rw-r--r-- | src/network/core/tcp_coordinator.h | 29 |
2 files changed, 33 insertions, 0 deletions
diff --git a/src/network/core/tcp_coordinator.cpp b/src/network/core/tcp_coordinator.cpp index 1cf5cd676..bbcb59b14 100644 --- a/src/network/core/tcp_coordinator.cpp +++ b/src/network/core/tcp_coordinator.cpp @@ -31,6 +31,8 @@ bool NetworkCoordinatorSocketHandler::HandlePacket(Packet *p) case PACKET_COORDINATOR_SERVER_REGISTER: return this->Receive_SERVER_REGISTER(p); case PACKET_COORDINATOR_GC_REGISTER_ACK: return this->Receive_GC_REGISTER_ACK(p); case PACKET_COORDINATOR_SERVER_UPDATE: return this->Receive_SERVER_UPDATE(p); + case PACKET_COORDINATOR_CLIENT_LISTING: return this->Receive_CLIENT_LISTING(p); + case PACKET_COORDINATOR_GC_LISTING: return this->Receive_GC_LISTING(p); default: Debug(net, 0, "[tcp/coordinator] Received invalid packet type {}", type); @@ -78,3 +80,5 @@ bool NetworkCoordinatorSocketHandler::Receive_GC_ERROR(Packet *p) { return this- bool NetworkCoordinatorSocketHandler::Receive_SERVER_REGISTER(Packet *p) { return this->ReceiveInvalidPacket(PACKET_COORDINATOR_SERVER_REGISTER); } bool NetworkCoordinatorSocketHandler::Receive_GC_REGISTER_ACK(Packet *p) { return this->ReceiveInvalidPacket(PACKET_COORDINATOR_GC_REGISTER_ACK); } bool NetworkCoordinatorSocketHandler::Receive_SERVER_UPDATE(Packet *p) { return this->ReceiveInvalidPacket(PACKET_COORDINATOR_SERVER_UPDATE); } +bool NetworkCoordinatorSocketHandler::Receive_CLIENT_LISTING(Packet *p) { return this->ReceiveInvalidPacket(PACKET_COORDINATOR_CLIENT_LISTING); } +bool NetworkCoordinatorSocketHandler::Receive_GC_LISTING(Packet *p) { return this->ReceiveInvalidPacket(PACKET_COORDINATOR_GC_LISTING); } diff --git a/src/network/core/tcp_coordinator.h b/src/network/core/tcp_coordinator.h index a438f07aa..e95916816 100644 --- a/src/network/core/tcp_coordinator.h +++ b/src/network/core/tcp_coordinator.h @@ -29,6 +29,8 @@ enum PacketCoordinatorType { PACKET_COORDINATOR_SERVER_REGISTER, ///< Server registration. PACKET_COORDINATOR_GC_REGISTER_ACK, ///< Game Coordinator accepts the registration. PACKET_COORDINATOR_SERVER_UPDATE, ///< Server sends an set intervals an update of the server. + PACKET_COORDINATOR_CLIENT_LISTING, ///< Client is requesting a listing of all public servers. + PACKET_COORDINATOR_GC_LISTING, ///< Game Coordinator returns a listing of all public servers. PACKET_COORDINATOR_END, ///< Must ALWAYS be on the end of this list!! (period). }; @@ -101,6 +103,33 @@ protected: */ virtual bool Receive_SERVER_UPDATE(Packet *p); + /** + * Client requests a list of all public servers. + * + * uint8 Game Coordinator protocol version. + * uint8 Game-info version used by this client. + * string Revision of the client. + * + * @param p The packet that was just received. + * @return True upon success, otherwise false. + */ + virtual bool Receive_CLIENT_LISTING(Packet *p); + + /** + * Game Coordinator replies with a list of all public servers. Multiple + * of these packets are received after a request till all servers are + * sent over. Last packet will have server count of 0. + * + * uint16 Amount of public servers in this packet. + * For each server: + * string Connection string for this server. + * Serialized NetworkGameInfo. See game_info.hpp for details. + * + * @param p The packet that was just received. + * @return True upon success, otherwise false. + */ + virtual bool Receive_GC_LISTING(Packet *p); + bool HandlePacket(Packet *p); public: /** |