From c13956a58a785f3f5285028671a812cfb29ec44f Mon Sep 17 00:00:00 2001 From: Rubidium Date: Sun, 20 Apr 2025 12:17:45 +0200 Subject: [PATCH] Codechange: use std::string_view for connection strings --- src/network/core/address.cpp | 4 ++-- src/network/core/address.h | 4 ++-- src/network/core/tcp.h | 4 ++-- src/network/core/tcp_connect.cpp | 4 ++-- src/network/network.cpp | 20 ++++++++++---------- src/network/network_client.cpp | 2 +- src/network/network_client.h | 2 +- src/network/network_content.cpp | 2 +- src/network/network_coordinator.cpp | 2 +- src/network/network_func.h | 4 ++-- src/network/network_gamelist.cpp | 2 +- src/network/network_gamelist.h | 4 ++-- src/network/network_internal.h | 10 +++++----- src/network/network_query.h | 4 ++-- src/network/network_stun.cpp | 2 +- src/network/network_turn.cpp | 4 ++-- src/network/network_turn.h | 4 ++-- 17 files changed, 39 insertions(+), 39 deletions(-) diff --git a/src/network/core/address.cpp b/src/network/core/address.cpp index ea3bf024e3..486cf20b55 100644 --- a/src/network/core/address.cpp +++ b/src/network/core/address.cpp @@ -442,7 +442,7 @@ void NetworkAddress::Listen(int socktype, SocketList *sockets) * @param company Pointer to the company variable to set iff indicated. * @return A valid ServerAddress of the parsed information. */ -/* static */ ServerAddress ServerAddress::Parse(const std::string &connection_string, uint16_t default_port, CompanyID *company_id) +/* static */ ServerAddress ServerAddress::Parse(std::string_view connection_string, uint16_t default_port, CompanyID *company_id) { if (connection_string.starts_with("+")) { std::string_view invite_code = ParseCompanyFromConnectionString(connection_string, company_id); @@ -451,5 +451,5 @@ void NetworkAddress::Listen(int socktype, SocketList *sockets) uint16_t port = default_port; std::string_view ip = ParseFullConnectionString(connection_string, port, company_id); - return ServerAddress(SERVER_ADDRESS_DIRECT, std::string(ip) + ":" + std::to_string(port)); + return ServerAddress(SERVER_ADDRESS_DIRECT, fmt::format("{}:{}", ip, port)); } diff --git a/src/network/core/address.h b/src/network/core/address.h index ecd30323a3..15905a7666 100644 --- a/src/network/core/address.h +++ b/src/network/core/address.h @@ -194,13 +194,13 @@ private: * @param type The type of the ServerAdress. * @param connection_string The connection_string that belongs to this ServerAddress type. */ - ServerAddress(ServerAddressType type, const std::string &connection_string) : type(type), connection_string(connection_string) {} + ServerAddress(ServerAddressType type, std::string &&connection_string) : type(type), connection_string(std::move(connection_string)) {} public: ServerAddressType type; ///< The type of this ServerAddress. std::string connection_string; ///< The connection string for this ServerAddress. - static ServerAddress Parse(const std::string &connection_string, uint16_t default_port, CompanyID *company_id = nullptr); + static ServerAddress Parse(std::string_view connection_string, uint16_t default_port, CompanyID *company_id = nullptr); }; #endif /* NETWORK_CORE_ADDRESS_H */ diff --git a/src/network/core/tcp.h b/src/network/core/tcp.h index 0c5e1a547f..38d76aaa47 100644 --- a/src/network/core/tcp.h +++ b/src/network/core/tcp.h @@ -120,7 +120,7 @@ private: public: TCPConnecter() {}; - TCPConnecter(const std::string &connection_string, uint16_t default_port, const NetworkAddress &bind_address = {}, int family = AF_UNSPEC); + TCPConnecter(std::string_view connection_string, uint16_t default_port, const NetworkAddress &bind_address = {}, int family = AF_UNSPEC); virtual ~TCPConnecter(); /** @@ -161,7 +161,7 @@ private: public: ServerAddress server_address; ///< Address we are connecting to. - TCPServerConnecter(const std::string &connection_string, uint16_t default_port); + TCPServerConnecter(std::string_view connection_string, uint16_t default_port); void SetConnected(SOCKET sock); void SetFailure(); diff --git a/src/network/core/tcp_connect.cpp b/src/network/core/tcp_connect.cpp index 1559f95172..0862bdc6a6 100644 --- a/src/network/core/tcp_connect.cpp +++ b/src/network/core/tcp_connect.cpp @@ -26,7 +26,7 @@ * @param default_port If not indicated in connection_string, what port to use. * @param bind_address The local bind address to use. Defaults to letting the OS find one. */ -TCPConnecter::TCPConnecter(const std::string &connection_string, uint16_t default_port, const NetworkAddress &bind_address, int family) : +TCPConnecter::TCPConnecter(std::string_view connection_string, uint16_t default_port, const NetworkAddress &bind_address, int family) : bind_address(bind_address), family(family) { @@ -38,7 +38,7 @@ TCPConnecter::TCPConnecter(const std::string &connection_string, uint16_t defaul * @param connection_string The address to connect to. * @param default_port If not indicated in connection_string, what port to use. */ -TCPServerConnecter::TCPServerConnecter(const std::string &connection_string, uint16_t default_port) : +TCPServerConnecter::TCPServerConnecter(std::string_view connection_string, uint16_t default_port) : server_address(ServerAddress::Parse(connection_string, default_port)) { switch (this->server_address.type) { diff --git a/src/network/network.cpp b/src/network/network.cpp index 4da191ae95..5dff9f83c1 100644 --- a/src/network/network.cpp +++ b/src/network/network.cpp @@ -472,7 +472,7 @@ static void CheckPauseOnJoin() * @param company_id The company ID to set, if available. * @return A std::string_view into the connection string without the company part. */ -std::string_view ParseCompanyFromConnectionString(const std::string &connection_string, CompanyID *company_id) +std::string_view ParseCompanyFromConnectionString(std::string_view connection_string, CompanyID *company_id) { std::string_view ip = connection_string; if (company_id == nullptr) return ip; @@ -516,7 +516,7 @@ std::string_view ParseCompanyFromConnectionString(const std::string &connection_ * @param company_id The company ID to set, if available. * @return A std::string_view into the connection string with the (IP) address part. */ -std::string_view ParseFullConnectionString(const std::string &connection_string, uint16_t &port, CompanyID *company_id) +std::string_view ParseFullConnectionString(std::string_view connection_string, uint16_t &port, CompanyID *company_id) { std::string_view ip = ParseCompanyFromConnectionString(connection_string, company_id); @@ -536,11 +536,11 @@ std::string_view ParseFullConnectionString(const std::string &connection_string, * @param default_port The port to use if none is given. * @return The normalized connection string. */ -std::string NormalizeConnectionString(const std::string &connection_string, uint16_t default_port) +std::string NormalizeConnectionString(std::string_view connection_string, uint16_t default_port) { uint16_t port = default_port; std::string_view ip = ParseFullConnectionString(connection_string, port); - return std::string(ip) + ":" + std::to_string(port); + return fmt::format("{}:{}", ip, port); } /** @@ -551,7 +551,7 @@ std::string NormalizeConnectionString(const std::string &connection_string, uint * @param default_port The default port to set port to if not in connection_string. * @return A valid NetworkAddress of the parsed information. */ -NetworkAddress ParseConnectionString(const std::string &connection_string, uint16_t default_port) +NetworkAddress ParseConnectionString(std::string_view connection_string, uint16_t default_port) { uint16_t port = default_port; std::string_view ip = ParseFullConnectionString(connection_string, port); @@ -642,7 +642,7 @@ private: std::string connection_string; public: - TCPQueryConnecter(const std::string &connection_string) : TCPServerConnecter(connection_string, NETWORK_DEFAULT_PORT), connection_string(connection_string) {} + TCPQueryConnecter(std::string_view connection_string) : TCPServerConnecter(connection_string, NETWORK_DEFAULT_PORT), connection_string(connection_string) {} void OnFailure() override { @@ -667,7 +667,7 @@ public: * Query a server to fetch the game-info. * @param connection_string the address to query. */ -void NetworkQueryServer(const std::string &connection_string) +void NetworkQueryServer(std::string_view connection_string) { if (!_network_available) return; @@ -689,7 +689,7 @@ void NetworkQueryServer(const std::string &connection_string) * @param never_expire Whether the entry can expire (removed when no longer found in the public listing). * @return The entry on the game list. */ -NetworkGame *NetworkAddServer(const std::string &connection_string, bool manually, bool never_expire) +NetworkGame *NetworkAddServer(std::string_view connection_string, bool manually, bool never_expire) { if (connection_string.empty()) return nullptr; @@ -745,7 +745,7 @@ private: std::string connection_string; public: - TCPClientConnecter(const std::string &connection_string) : TCPServerConnecter(connection_string, NETWORK_DEFAULT_PORT), connection_string(connection_string) {} + TCPClientConnecter(std::string_view connection_string) : TCPServerConnecter(connection_string, NETWORK_DEFAULT_PORT), connection_string(connection_string) {} void OnFailure() override { @@ -782,7 +782,7 @@ public: * @param join_server_password The password for the server. * @return Whether the join has started. */ -bool NetworkClientConnectGame(const std::string &connection_string, CompanyID default_company, const std::string &join_server_password) +bool NetworkClientConnectGame(std::string_view connection_string, CompanyID default_company, const std::string &join_server_password) { Debug(net, 9, "NetworkClientConnectGame(): connection_string={}", connection_string); diff --git a/src/network/network_client.cpp b/src/network/network_client.cpp index 50bf0e1ab6..bb210fe3f6 100644 --- a/src/network/network_client.cpp +++ b/src/network/network_client.cpp @@ -109,7 +109,7 @@ void ClientNetworkEmergencySave() * Create a new socket for the client side of the game connection. * @param s The socket to connect with. */ -ClientNetworkGameSocketHandler::ClientNetworkGameSocketHandler(SOCKET s, const std::string &connection_string) : NetworkGameSocketHandler(s), connection_string(connection_string) +ClientNetworkGameSocketHandler::ClientNetworkGameSocketHandler(SOCKET s, std::string_view connection_string) : NetworkGameSocketHandler(s), connection_string(connection_string) { assert(ClientNetworkGameSocketHandler::my_client == nullptr); ClientNetworkGameSocketHandler::my_client = this; diff --git a/src/network/network_client.h b/src/network/network_client.h index 5463949237..6205ed9b1b 100644 --- a/src/network/network_client.h +++ b/src/network/network_client.h @@ -74,7 +74,7 @@ protected: static NetworkRecvStatus SendIdentify(); void CheckConnection(); public: - ClientNetworkGameSocketHandler(SOCKET s, const std::string &connection_string); + ClientNetworkGameSocketHandler(SOCKET s, std::string_view connection_string); ~ClientNetworkGameSocketHandler(); NetworkRecvStatus CloseConnection(NetworkRecvStatus status) override; diff --git a/src/network/network_content.cpp b/src/network/network_content.cpp index 33225011da..f577e53a71 100644 --- a/src/network/network_content.cpp +++ b/src/network/network_content.cpp @@ -718,7 +718,7 @@ public: * Initiate the connecting. * @param address The address of the server. */ - NetworkContentConnecter(const std::string &connection_string) : TCPConnecter(connection_string, NETWORK_CONTENT_SERVER_PORT) {} + NetworkContentConnecter(std::string_view connection_string) : TCPConnecter(connection_string, NETWORK_CONTENT_SERVER_PORT) {} void OnFailure() override { diff --git a/src/network/network_coordinator.cpp b/src/network/network_coordinator.cpp index bf1203f436..dc4c85b3a5 100644 --- a/src/network/network_coordinator.cpp +++ b/src/network/network_coordinator.cpp @@ -106,7 +106,7 @@ public: * Initiate the connecting. * @param connection_string The address of the Game Coordinator server. */ - NetworkCoordinatorConnecter(const std::string &connection_string) : TCPConnecter(connection_string, NETWORK_COORDINATOR_SERVER_PORT) {} + NetworkCoordinatorConnecter(std::string_view connection_string) : TCPConnecter(connection_string, NETWORK_COORDINATOR_SERVER_PORT) {} void OnFailure() override { diff --git a/src/network/network_func.h b/src/network/network_func.h index 821c5a01cb..c19d58a419 100644 --- a/src/network/network_func.h +++ b/src/network/network_func.h @@ -44,13 +44,13 @@ void NetworkReboot(); void NetworkDisconnect(bool close_admins = true); void NetworkGameLoop(); void NetworkBackgroundLoop(); -std::string_view ParseFullConnectionString(const std::string &connection_string, uint16_t &port, CompanyID *company_id = nullptr); +std::string_view ParseFullConnectionString(std::string_view connection_string, uint16_t &port, CompanyID *company_id = nullptr); using NetworkCompanyStatsArray = ReferenceThroughBaseContainer>; NetworkCompanyStatsArray NetworkGetCompanyStats(); void NetworkUpdateClientInfo(ClientID client_id); void NetworkClientsToSpectators(CompanyID cid); -bool NetworkClientConnectGame(const std::string &connection_string, CompanyID default_company, const std::string &join_server_password = ""); +bool NetworkClientConnectGame(std::string_view connection_string, CompanyID default_company, const std::string &join_server_password = ""); void NetworkClientJoinGame(); void NetworkClientRequestMove(CompanyID company); void NetworkClientSendRcon(std::string_view password, std::string_view command); diff --git a/src/network/network_gamelist.cpp b/src/network/network_gamelist.cpp index 4b06381865..a1a7206bd1 100644 --- a/src/network/network_gamelist.cpp +++ b/src/network/network_gamelist.cpp @@ -29,7 +29,7 @@ int _network_game_list_version = 0; ///< Current version of all items in the lis * @param connection_string the address of the to-be added item * @return a point to the newly added or already existing item */ -NetworkGame *NetworkGameListAddItem(const std::string &connection_string) +NetworkGame *NetworkGameListAddItem(std::string_view connection_string) { /* Parse the connection string to ensure the default port is there. */ const std::string resolved_connection_string = ServerAddress::Parse(connection_string, NETWORK_DEFAULT_PORT).connection_string; diff --git a/src/network/network_gamelist.h b/src/network/network_gamelist.h index db84540f6b..50c8a71abc 100644 --- a/src/network/network_gamelist.h +++ b/src/network/network_gamelist.h @@ -25,7 +25,7 @@ enum NetworkGameStatus : uint8_t { /** Structure with information shown in the game list (GUI) */ struct NetworkGame { - NetworkGame(const std::string &connection_string) : connection_string(connection_string) {} + NetworkGame(std::string_view connection_string) : connection_string(connection_string) {} NetworkGameInfo info{}; ///< The game information of this server. std::string connection_string; ///< Address of the server. @@ -38,7 +38,7 @@ struct NetworkGame { extern std::vector> _network_game_list; extern int _network_game_list_version; -NetworkGame *NetworkGameListAddItem(const std::string &connection_string); +NetworkGame *NetworkGameListAddItem(std::string_view connection_string); void NetworkGameListRemoveItem(NetworkGame *remove); void NetworkGameListRemoveExpired(); diff --git a/src/network/network_internal.h b/src/network/network_internal.h index 85bb86cb4c..f9e045d3f0 100644 --- a/src/network/network_internal.h +++ b/src/network/network_internal.h @@ -81,10 +81,10 @@ extern std::string _network_server_name; extern uint8_t _network_reconnect; -void NetworkQueryServer(const std::string &connection_string); +void NetworkQueryServer(std::string_view connection_string); void GetBindAddresses(NetworkAddressList *addresses, uint16_t port); -struct NetworkGame *NetworkAddServer(const std::string &connection_string, bool manually = true, bool never_expire = false); +struct NetworkGame *NetworkAddServer(std::string_view connection_string, bool manually = true, bool never_expire = false); void NetworkRebuildHostList(); void UpdateNetworkGameWindow(); @@ -115,9 +115,9 @@ uint NetworkCalculateLag(const NetworkClientSocket *cs); StringID GetNetworkErrorMsg(NetworkErrorCode err); bool NetworkMakeClientNameUnique(std::string &new_name); -std::string_view ParseCompanyFromConnectionString(const std::string &connection_string, CompanyID *company_id); -NetworkAddress ParseConnectionString(const std::string &connection_string, uint16_t default_port); -std::string NormalizeConnectionString(const std::string &connection_string, uint16_t default_port); +std::string_view ParseCompanyFromConnectionString(std::string_view connection_string, CompanyID *company_id); +NetworkAddress ParseConnectionString(std::string_view connection_string, uint16_t default_port); +std::string NormalizeConnectionString(std::string_view connection_string, uint16_t default_port); void ClientNetworkEmergencySave(); diff --git a/src/network/network_query.h b/src/network/network_query.h index 9a58a19573..8e33ef9ccb 100644 --- a/src/network/network_query.h +++ b/src/network/network_query.h @@ -36,14 +36,14 @@ public: * @param s The socket to connect with. * @param connection_string The connection string of the server. */ - QueryNetworkGameSocketHandler(SOCKET s, const std::string &connection_string) : NetworkGameSocketHandler(s), connection_string(connection_string) {} + QueryNetworkGameSocketHandler(SOCKET s, std::string_view connection_string) : NetworkGameSocketHandler(s), connection_string(connection_string) {} /** * Start to query a server based on an open socket. * @param s The socket to connect with. * @param connection_string The connection string of the server. */ - static void QueryServer(SOCKET s, const std::string &connection_string) + static void QueryServer(SOCKET s, std::string_view connection_string) { auto query = std::make_unique(s, connection_string); query->SendGameInfo(); diff --git a/src/network/network_stun.cpp b/src/network/network_stun.cpp index 2acd438e56..63f69e68f1 100644 --- a/src/network/network_stun.cpp +++ b/src/network/network_stun.cpp @@ -28,7 +28,7 @@ public: * @param stun_handler The handler for this request. * @param connection_string The address of the server. */ - NetworkStunConnecter(ClientNetworkStunSocketHandler *stun_handler, const std::string &connection_string, const std::string &token, uint8_t family) : + NetworkStunConnecter(ClientNetworkStunSocketHandler *stun_handler, std::string_view connection_string, const std::string &token, uint8_t family) : TCPConnecter(connection_string, NETWORK_STUN_SERVER_PORT, NetworkAddress(), family), stun_handler(stun_handler), token(token), diff --git a/src/network/network_turn.cpp b/src/network/network_turn.cpp index 02de66ab9e..bf455e20c1 100644 --- a/src/network/network_turn.cpp +++ b/src/network/network_turn.cpp @@ -28,7 +28,7 @@ public: * Initiate the connecting. * @param connection_string The address of the TURN server. */ - NetworkTurnConnecter(ClientNetworkTurnSocketHandler *handler, const std::string &connection_string) : TCPConnecter(connection_string, NETWORK_TURN_SERVER_PORT), handler(handler) {} + NetworkTurnConnecter(ClientNetworkTurnSocketHandler *handler, std::string_view connection_string) : TCPConnecter(connection_string, NETWORK_TURN_SERVER_PORT), handler(handler) {} void OnFailure() override { @@ -96,7 +96,7 @@ void ClientNetworkTurnSocketHandler::Connect() * @param connection_string Connection string of the TURN server. * @return The handler for this TURN connection. */ -/* static */ std::unique_ptr ClientNetworkTurnSocketHandler::Turn(const std::string &token, uint8_t tracking_number, const std::string &ticket, const std::string &connection_string) +/* static */ std::unique_ptr ClientNetworkTurnSocketHandler::Turn(const std::string &token, uint8_t tracking_number, const std::string &ticket, std::string_view connection_string) { auto turn_handler = std::make_unique(token, tracking_number, connection_string); diff --git a/src/network/network_turn.h b/src/network/network_turn.h index 961a961788..95ff99f646 100644 --- a/src/network/network_turn.h +++ b/src/network/network_turn.h @@ -27,7 +27,7 @@ public: std::shared_ptr connecter{}; ///< Connecter instance. bool connect_started = false; ///< Whether we started the connection. - ClientNetworkTurnSocketHandler(const std::string &token, uint8_t tracking_number, const std::string &connection_string) : token(token), tracking_number(tracking_number), connection_string(connection_string) {} + ClientNetworkTurnSocketHandler(const std::string &token, uint8_t tracking_number, std::string_view connection_string) : token(token), tracking_number(tracking_number), connection_string(connection_string) {} NetworkRecvStatus CloseConnection(bool error = true) override; ~ClientNetworkTurnSocketHandler() override; @@ -36,7 +36,7 @@ public: void Connect(); void ConnectFailure(); - static std::unique_ptr Turn(const std::string &token, uint8_t tracking_number, const std::string &ticket, const std::string &connection_string); + static std::unique_ptr Turn(const std::string &token, uint8_t tracking_number, const std::string &ticket, std::string_view connection_string); }; #endif /* NETWORK_TURN_H */