summaryrefslogtreecommitdiff
path: root/src/network
diff options
context:
space:
mode:
authorrubidium42 <rubidium@openttd.org>2021-05-15 08:31:45 +0200
committerrubidium42 <rubidium42@users.noreply.github.com>2021-05-16 10:07:51 +0200
commit4d246cda73d73cbc3f1557dd4ecb1c1d0d451fb0 (patch)
tree61bebbd1870c6ad199d3c0f2273e0ec7e807c907 /src/network
parent83679c0e57cb3e13de6d6c5ec33735bc4070da40 (diff)
downloadopenttd-4d246cda73d73cbc3f1557dd4ecb1c1d0d451fb0.tar.xz
Codechange: [Network] Let NetworkClientInfo use std::string
Diffstat (limited to 'src/network')
-rw-r--r--src/network/network.cpp2
-rw-r--r--src/network/network_base.h8
-rw-r--r--src/network/network_chat_gui.cpp2
-rw-r--r--src/network/network_client.cpp19
-rw-r--r--src/network/network_server.cpp24
5 files changed, 26 insertions, 29 deletions
diff --git a/src/network/network.cpp b/src/network/network.cpp
index 19957f700..15e4b8d2a 100644
--- a/src/network/network.cpp
+++ b/src/network/network.cpp
@@ -844,7 +844,7 @@ static void NetworkInitGameInfo()
NetworkClientInfo *ci = new NetworkClientInfo(CLIENT_ID_SERVER);
ci->client_playas = _network_dedicated ? COMPANY_SPECTATOR : COMPANY_FIRST;
- strecpy(ci->client_name, _settings_client.network.client_name.c_str(), lastof(ci->client_name));
+ ci->client_name = _settings_client.network.client_name;
}
/**
diff --git a/src/network/network_base.h b/src/network/network_base.h
index 9ad030062..479f340f1 100644
--- a/src/network/network_base.h
+++ b/src/network/network_base.h
@@ -22,10 +22,10 @@ extern NetworkClientInfoPool _networkclientinfo_pool;
/** Container for all information known about a client. */
struct NetworkClientInfo : NetworkClientInfoPool::PoolItem<&_networkclientinfo_pool> {
- ClientID client_id; ///< Client identifier (same as ClientState->client_id)
- char client_name[NETWORK_CLIENT_NAME_LENGTH]; ///< Name of the client
- CompanyID client_playas; ///< As which company is this client playing (CompanyID)
- Date join_date; ///< Gamedate the client has joined
+ ClientID client_id; ///< Client identifier (same as ClientState->client_id)
+ std::string client_name; ///< Name of the client
+ CompanyID client_playas; ///< As which company is this client playing (CompanyID)
+ Date join_date; ///< Gamedate the client has joined
/**
* Create a new client.
diff --git a/src/network/network_chat_gui.cpp b/src/network/network_chat_gui.cpp
index f8eaf3bda..068a5314e 100644
--- a/src/network/network_chat_gui.cpp
+++ b/src/network/network_chat_gui.cpp
@@ -332,7 +332,7 @@ struct NetworkChatWindow : public Window {
/* Skip inactive clients */
for (NetworkClientInfo *ci : NetworkClientInfo::Iterate(*item)) {
*item = ci->index;
- return ci->client_name;
+ return ci->client_name.c_str();
}
*item = MAX_CLIENT_SLOTS;
}
diff --git a/src/network/network_client.cpp b/src/network/network_client.cpp
index 78670aa94..08a35e980 100644
--- a/src/network/network_client.cpp
+++ b/src/network/network_client.cpp
@@ -651,9 +651,8 @@ NetworkRecvStatus ClientNetworkGameSocketHandler::Receive_SERVER_CLIENT_INFO(Pac
NetworkClientInfo *ci;
ClientID client_id = (ClientID)p->Recv_uint32();
CompanyID playas = (CompanyID)p->Recv_uint8();
- char name[NETWORK_NAME_LENGTH];
- p->Recv_string(name, sizeof(name));
+ std::string name = p->Recv_string(NETWORK_NAME_LENGTH);
if (this->status < STATUS_AUTHORIZED) return NETWORK_RECV_STATUS_MALFORMED_PACKET;
if (this->HasClientQuit()) return NETWORK_RECV_STATUS_CLIENT_QUIT;
@@ -664,7 +663,7 @@ NetworkRecvStatus ClientNetworkGameSocketHandler::Receive_SERVER_CLIENT_INFO(Pac
ci = NetworkClientInfo::GetByClientID(client_id);
if (ci != nullptr) {
- if (playas == ci->client_playas && strcmp(name, ci->client_name) != 0) {
+ if (playas == ci->client_playas && name.compare(ci->client_name) != 0) {
/* Client name changed, display the change */
NetworkTextMessage(NETWORK_ACTION_NAME_CHANGE, CC_DEFAULT, false, ci->client_name, name);
} else if (playas != ci->client_playas) {
@@ -677,7 +676,7 @@ NetworkRecvStatus ClientNetworkGameSocketHandler::Receive_SERVER_CLIENT_INFO(Pac
if (client_id == _network_own_client_id) SetLocalCompany(!Company::IsValidID(playas) ? COMPANY_SPECTATOR : playas);
ci->client_playas = playas;
- strecpy(ci->client_name, name, lastof(ci->client_name));
+ ci->client_name = name;
InvalidateWindowData(WC_CLIENT_LIST, 0);
@@ -696,7 +695,7 @@ NetworkRecvStatus ClientNetworkGameSocketHandler::Receive_SERVER_CLIENT_INFO(Pac
ci->client_playas = playas;
if (client_id == _network_own_client_id) this->SetInfo(ci);
- strecpy(ci->client_name, name, lastof(ci->client_name));
+ ci->client_name = name;
InvalidateWindowData(WC_CLIENT_LIST, 0);
@@ -745,8 +744,7 @@ NetworkRecvStatus ClientNetworkGameSocketHandler::Receive_SERVER_ERROR(Packet *p
if (error < (ptrdiff_t)lengthof(network_error_strings)) err = network_error_strings[error];
/* In case of kicking a client, we assume there is a kick message in the packet if we can read one byte */
if (error == NETWORK_ERROR_KICKED && p->CanReadFromPacket(1)) {
- char kick_msg[255];
- p->Recv_string(kick_msg, sizeof(kick_msg));
+ std::string kick_msg = p->Recv_string(NETWORK_CHAT_LENGTH);
SetDParamStr(0, kick_msg);
ShowErrorMessage(err, STR_NETWORK_ERROR_KICK_MESSAGE, WL_CRITICAL);
} else {
@@ -1160,10 +1158,9 @@ NetworkRecvStatus ClientNetworkGameSocketHandler::Receive_SERVER_RCON(Packet *p)
TextColour colour_code = (TextColour)p->Recv_uint16();
if (!IsValidConsoleColour(colour_code)) return NETWORK_RECV_STATUS_MALFORMED_PACKET;
- char rcon_out[NETWORK_RCONCOMMAND_LENGTH];
- p->Recv_string(rcon_out, sizeof(rcon_out));
+ std::string rcon_out = p->Recv_string(NETWORK_RCONCOMMAND_LENGTH);
- IConsolePrint(colour_code, rcon_out);
+ IConsolePrint(colour_code, rcon_out.c_str());
return NETWORK_RECV_STATUS_OKAY;
}
@@ -1370,7 +1367,7 @@ void NetworkUpdateClientName()
strecpy(temporary_name, _settings_client.network.client_name.c_str(), lastof(temporary_name));
if (NetworkFindName(temporary_name, lastof(temporary_name))) {
NetworkTextMessage(NETWORK_ACTION_NAME_CHANGE, CC_DEFAULT, false, ci->client_name, temporary_name);
- strecpy(ci->client_name, temporary_name, lastof(ci->client_name));
+ ci->client_name = temporary_name;
NetworkUpdateClientInfo(CLIENT_ID_SERVER);
}
}
diff --git a/src/network/network_server.cpp b/src/network/network_server.cpp
index 0d5eb83fd..3a9128427 100644
--- a/src/network/network_server.cpp
+++ b/src/network/network_server.cpp
@@ -927,7 +927,7 @@ NetworkRecvStatus ServerNetworkGameSocketHandler::Receive_CLIENT_JOIN(Packet *p)
NetworkClientInfo *ci = new NetworkClientInfo(this->client_id);
this->SetInfo(ci);
ci->join_date = _date;
- strecpy(ci->client_name, name, lastof(ci->client_name));
+ ci->client_name = name;
ci->client_playas = playas;
DEBUG(desync, 1, "client: %08x; %02x; %02x; %02x", _date, _date_fract, (int)ci->client_playas, (int)ci->index);
@@ -1413,7 +1413,7 @@ NetworkRecvStatus ServerNetworkGameSocketHandler::Receive_CLIENT_SET_NAME(Packet
/* Display change */
if (NetworkFindName(client_name, lastof(client_name))) {
NetworkTextMessage(NETWORK_ACTION_NAME_CHANGE, CC_DEFAULT, false, ci->client_name, client_name);
- strecpy(ci->client_name, client_name, lastof(ci->client_name));
+ ci->client_name = client_name;
NetworkUpdateClientInfo(ci->client_id);
}
}
@@ -1689,7 +1689,7 @@ bool NetworkFindName(char *new_name, const char *last)
while (!found_name) {
found_name = true;
for (const NetworkClientInfo *ci : NetworkClientInfo::Iterate()) {
- if (strcmp(ci->client_name, new_name) == 0) {
+ if (ci->client_name.compare(new_name) == 0) {
/* Name already in use */
found_name = false;
break;
@@ -1698,7 +1698,7 @@ bool NetworkFindName(char *new_name, const char *last)
/* Check if it is the same as the server-name */
const NetworkClientInfo *ci = NetworkClientInfo::GetByClientID(CLIENT_ID_SERVER);
if (ci != nullptr) {
- if (strcmp(ci->client_name, new_name) == 0) found_name = false; // name already in use
+ if (ci->client_name.compare(new_name) == 0) found_name = false; // name already in use
}
if (!found_name) {
@@ -1723,7 +1723,7 @@ bool NetworkServerChangeClientName(ClientID client_id, const char *new_name)
{
/* Check if the name's already in use */
for (NetworkClientInfo *ci : NetworkClientInfo::Iterate()) {
- if (strcmp(ci->client_name, new_name) == 0) return false;
+ if (ci->client_name.compare(new_name) == 0) return false;
}
NetworkClientInfo *ci = NetworkClientInfo::GetByClientID(client_id);
@@ -1731,7 +1731,7 @@ bool NetworkServerChangeClientName(ClientID client_id, const char *new_name)
NetworkTextMessage(NETWORK_ACTION_NAME_CHANGE, CC_DEFAULT, true, ci->client_name, new_name);
- strecpy(ci->client_name, new_name, lastof(ci->client_name));
+ ci->client_name = new_name;
NetworkUpdateClientInfo(client_id);
return true;
@@ -1963,7 +1963,7 @@ void NetworkServerShowStatusToConsole()
status = (cs->status < (ptrdiff_t)lengthof(stat_str) ? stat_str[cs->status] : "unknown");
IConsolePrintF(CC_INFO, "Client #%1d name: '%s' status: '%s' frame-lag: %3d company: %1d IP: %s",
- cs->client_id, ci->client_name, status, lag,
+ cs->client_id, ci->client_name.c_str(), status, lag,
ci->client_playas + (Company::IsValidID(ci->client_playas) ? 1 : 0),
cs->GetClientIP());
}
@@ -2135,10 +2135,10 @@ void ServerNetworkGameSocketHandler::GetClientName(char *client_name, const char
{
const NetworkClientInfo *ci = this->GetInfo();
- if (ci == nullptr || StrEmpty(ci->client_name)) {
+ if (ci == nullptr || ci->client_name.empty()) {
seprintf(client_name, last, "Client #%4d", this->client_id);
} else {
- strecpy(client_name, ci->client_name, last);
+ strecpy(client_name, ci->client_name.c_str(), last);
}
}
@@ -2151,13 +2151,13 @@ void NetworkPrintClients()
if (_network_server) {
IConsolePrintF(CC_INFO, "Client #%1d name: '%s' company: %1d IP: %s",
ci->client_id,
- ci->client_name,
+ ci->client_name.c_str(),
ci->client_playas + (Company::IsValidID(ci->client_playas) ? 1 : 0),
ci->client_id == CLIENT_ID_SERVER ? "server" : NetworkClientSocket::GetByClientID(ci->client_id)->GetClientIP());
} else {
IConsolePrintF(CC_INFO, "Client #%1d name: '%s' company: %1d",
ci->client_id,
- ci->client_name,
+ ci->client_name.c_str(),
ci->client_playas + (Company::IsValidID(ci->client_playas) ? 1 : 0));
}
}
@@ -2182,7 +2182,7 @@ void NetworkServerNewCompany(const Company *c, NetworkClientInfo *ci)
/* ci is nullptr when replaying, or for AIs. In neither case there is a client. */
ci->client_playas = c->index;
NetworkUpdateClientInfo(ci->client_id);
- NetworkSendCommand(0, 0, 0, CMD_RENAME_PRESIDENT, nullptr, ci->client_name, c->index);
+ NetworkSendCommand(0, 0, 0, CMD_RENAME_PRESIDENT, nullptr, ci->client_name.c_str(), c->index);
}
/* Announce new company on network. */