mirror of
https://github.com/OpenRCT2/OpenRCT2
synced 2026-01-20 21:43:06 +01:00
Improve network module in more C++ way
This commit is contained in:
@@ -407,12 +407,12 @@ bool NetworkBase::BeginServer(uint16_t port, const std::string& address)
|
||||
return true;
|
||||
}
|
||||
|
||||
int32_t NetworkBase::GetMode()
|
||||
int32_t NetworkBase::GetMode() const noexcept
|
||||
{
|
||||
return mode;
|
||||
}
|
||||
|
||||
int32_t NetworkBase::GetStatus()
|
||||
int32_t NetworkBase::GetStatus() const noexcept
|
||||
{
|
||||
return status;
|
||||
}
|
||||
@@ -430,17 +430,17 @@ NetworkAuth NetworkBase::GetAuthStatus()
|
||||
return NetworkAuth::None;
|
||||
}
|
||||
|
||||
uint32_t NetworkBase::GetServerTick()
|
||||
uint32_t NetworkBase::GetServerTick() const noexcept
|
||||
{
|
||||
return _serverState.tick;
|
||||
}
|
||||
|
||||
uint8_t NetworkBase::GetPlayerID()
|
||||
uint8_t NetworkBase::GetPlayerID() const noexcept
|
||||
{
|
||||
return player_id;
|
||||
}
|
||||
|
||||
NetworkConnection* NetworkBase::GetPlayerConnection(uint8_t id)
|
||||
NetworkConnection* NetworkBase::GetPlayerConnection(uint8_t id) const
|
||||
{
|
||||
auto player = GetPlayerByID(id);
|
||||
if (player != nullptr)
|
||||
@@ -653,19 +653,14 @@ void NetworkBase::UpdateClient()
|
||||
}
|
||||
}
|
||||
|
||||
std::vector<std::unique_ptr<NetworkPlayer>>::iterator NetworkBase::GetPlayerIteratorByID(uint8_t id)
|
||||
auto NetworkBase::GetPlayerIteratorByID(uint8_t id) const
|
||||
{
|
||||
auto it = std::find_if(player_list.begin(), player_list.end(), [&id](std::unique_ptr<NetworkPlayer> const& player) {
|
||||
return std::find_if(player_list.begin(), player_list.end(), [id](std::unique_ptr<NetworkPlayer> const& player) {
|
||||
return player->Id == id;
|
||||
});
|
||||
if (it != player_list.end())
|
||||
{
|
||||
return it;
|
||||
}
|
||||
return player_list.end();
|
||||
}
|
||||
|
||||
NetworkPlayer* NetworkBase::GetPlayerByID(uint8_t id)
|
||||
NetworkPlayer* NetworkBase::GetPlayerByID(uint8_t id) const
|
||||
{
|
||||
auto it = GetPlayerIteratorByID(id);
|
||||
if (it != player_list.end())
|
||||
@@ -675,18 +670,13 @@ NetworkPlayer* NetworkBase::GetPlayerByID(uint8_t id)
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
std::vector<std::unique_ptr<NetworkGroup>>::iterator NetworkBase::GetGroupIteratorByID(uint8_t id)
|
||||
auto NetworkBase::GetGroupIteratorByID(uint8_t id) const
|
||||
{
|
||||
auto it = std::find_if(
|
||||
group_list.begin(), group_list.end(), [&id](std::unique_ptr<NetworkGroup> const& group) { return group->Id == id; });
|
||||
if (it != group_list.end())
|
||||
{
|
||||
return it;
|
||||
}
|
||||
return group_list.end();
|
||||
return std::find_if(
|
||||
group_list.begin(), group_list.end(), [id](std::unique_ptr<NetworkGroup> const& group) { return group->Id == id; });
|
||||
}
|
||||
|
||||
NetworkGroup* NetworkBase::GetGroupByID(uint8_t id)
|
||||
NetworkGroup* NetworkBase::GetGroupByID(uint8_t id) const
|
||||
{
|
||||
auto it = GetGroupIteratorByID(id);
|
||||
if (it != group_list.end())
|
||||
@@ -712,7 +702,7 @@ const char* NetworkBase::FormatChat(NetworkPlayer* fromplayer, const char* text)
|
||||
return formatted.c_str();
|
||||
}
|
||||
|
||||
void NetworkBase::SendPacketToClients(const NetworkPacket& packet, bool front, bool gameCmd)
|
||||
void NetworkBase::SendPacketToClients(const NetworkPacket& packet, bool front, bool gameCmd) const
|
||||
{
|
||||
for (auto& client_connection : client_connection_list)
|
||||
{
|
||||
@@ -727,8 +717,7 @@ void NetworkBase::SendPacketToClients(const NetworkPacket& packet, bool front, b
|
||||
continue;
|
||||
}
|
||||
}
|
||||
auto packetCopy = packet;
|
||||
client_connection->QueuePacket(std::move(packetCopy), front);
|
||||
client_connection->QueuePacket(packet, front);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -765,7 +754,7 @@ bool NetworkBase::CheckSRAND(uint32_t tick, uint32_t srand0)
|
||||
return true;
|
||||
}
|
||||
|
||||
bool NetworkBase::IsDesynchronised()
|
||||
bool NetworkBase::IsDesynchronised() const noexcept
|
||||
{
|
||||
return _serverState.state == NetworkServerState::Desynced;
|
||||
}
|
||||
@@ -804,7 +793,7 @@ void NetworkBase::RequestStateSnapshot()
|
||||
Client_Send_RequestGameState(_serverState.desyncTick);
|
||||
}
|
||||
|
||||
NetworkServerState_t NetworkBase::GetServerState() const
|
||||
NetworkServerState_t NetworkBase::GetServerState() const noexcept
|
||||
{
|
||||
return _serverState;
|
||||
}
|
||||
@@ -930,7 +919,7 @@ uint8_t NetworkBase::GetGroupIDByHash(const std::string& keyhash)
|
||||
return groupId;
|
||||
}
|
||||
|
||||
uint8_t NetworkBase::GetDefaultGroup()
|
||||
uint8_t NetworkBase::GetDefaultGroup() const noexcept
|
||||
{
|
||||
return default_group;
|
||||
}
|
||||
@@ -1098,7 +1087,7 @@ void NetworkBase::BeginChatLog()
|
||||
_chatLogPath = BeginLog(directory, "", _chatLogFilenameFormat);
|
||||
|
||||
# if defined(_WIN32) && !defined(__MINGW32__)
|
||||
auto pathW = String::ToWideChar(_chatLogPath.c_str());
|
||||
auto pathW = String::ToWideChar(_chatLogPath);
|
||||
_chat_log_fs.open(pathW.c_str(), std::ios::out | std::ios::app);
|
||||
# else
|
||||
_chat_log_fs.open(_chatLogPath, std::ios::out | std::ios::app);
|
||||
@@ -1125,7 +1114,7 @@ void NetworkBase::BeginServerLog()
|
||||
_serverLogPath = BeginLog(directory, ServerName, _serverLogFilenameFormat);
|
||||
|
||||
# if defined(_WIN32) && !defined(__MINGW32__)
|
||||
auto pathW = String::ToWideChar(_serverLogPath.c_str());
|
||||
auto pathW = String::ToWideChar(_serverLogPath);
|
||||
_server_log_fs.open(pathW.c_str(), std::ios::out | std::ios::app | std::ios::binary);
|
||||
# else
|
||||
_server_log_fs.open(_serverLogPath, std::ios::out | std::ios::app | std::ios::binary);
|
||||
@@ -1205,10 +1194,10 @@ void NetworkBase::Client_Send_AUTH(
|
||||
const std::string& name, const std::string& password, const std::string& pubkey, const std::vector<uint8_t>& signature)
|
||||
{
|
||||
NetworkPacket packet(NetworkCommand::Auth);
|
||||
packet.WriteString(network_get_version().c_str());
|
||||
packet.WriteString(name.c_str());
|
||||
packet.WriteString(password.c_str());
|
||||
packet.WriteString(pubkey.c_str());
|
||||
packet.WriteString(network_get_version());
|
||||
packet.WriteString(name);
|
||||
packet.WriteString(password);
|
||||
packet.WriteString(pubkey);
|
||||
assert(signature.size() <= static_cast<size_t>(UINT32_MAX));
|
||||
packet << static_cast<uint32_t>(signature.size());
|
||||
packet.Write(signature.data(), signature.size());
|
||||
@@ -1364,7 +1353,7 @@ void NetworkBase::Server_Send_AUTH(NetworkConnection& connection)
|
||||
packet << static_cast<uint32_t>(connection.AuthStatus) << new_playerid;
|
||||
if (connection.AuthStatus == NetworkAuth::BadVersion)
|
||||
{
|
||||
packet.WriteString(network_get_version().c_str());
|
||||
packet.WriteString(network_get_version());
|
||||
}
|
||||
connection.QueuePacket(std::move(packet));
|
||||
if (connection.AuthStatus != NetworkAuth::Ok && connection.AuthStatus != NetworkAuth::RequirePassword)
|
||||
@@ -1517,7 +1506,7 @@ void NetworkBase::Server_Send_TICK()
|
||||
if (flags & NETWORK_TICK_FLAG_CHECKSUMS)
|
||||
{
|
||||
EntitiesChecksum checksum = GetAllEntitiesChecksum();
|
||||
packet.WriteString(checksum.ToString().c_str());
|
||||
packet.WriteString(checksum.ToString());
|
||||
}
|
||||
|
||||
SendPacketToClients(packet);
|
||||
@@ -1608,7 +1597,7 @@ void NetworkBase::Server_Send_GAMEINFO(NetworkConnection& connection)
|
||||
|
||||
jsonObj["provider"] = jsonProvider;
|
||||
|
||||
packet.WriteString(jsonObj.dump().c_str());
|
||||
packet.WriteString(jsonObj.dump());
|
||||
packet << _serverState.gamestateSnapshotsEnabled;
|
||||
|
||||
# endif
|
||||
@@ -2163,7 +2152,7 @@ void NetworkBase::Client_Handle_TOKEN(NetworkConnection& connection, NetworkPack
|
||||
// when process dump gets collected at some point in future.
|
||||
_key.Unload();
|
||||
|
||||
Client_Send_AUTH(gConfigNetwork.player_name.c_str(), gCustomPassword.c_str(), pubkey.c_str(), signature);
|
||||
Client_Send_AUTH(gConfigNetwork.player_name, gCustomPassword, pubkey, signature);
|
||||
}
|
||||
|
||||
void NetworkBase::Server_Handle_REQUEST_GAMESTATE(NetworkConnection& connection, NetworkPacket& packet)
|
||||
@@ -3109,7 +3098,7 @@ void NetworkBase::Client_Handle_EVENT([[maybe_unused]] NetworkConnection& connec
|
||||
{
|
||||
auto playerName = packet.ReadString();
|
||||
auto message = FormatStringId(STR_MULTIPLAYER_PLAYER_HAS_JOINED_THE_GAME, playerName);
|
||||
chat_history_add(message.c_str());
|
||||
chat_history_add(message);
|
||||
break;
|
||||
}
|
||||
case SERVER_EVENT_PLAYER_DISCONNECTED:
|
||||
@@ -3125,7 +3114,7 @@ void NetworkBase::Client_Handle_EVENT([[maybe_unused]] NetworkConnection& connec
|
||||
{
|
||||
message = FormatStringId(STR_MULTIPLAYER_PLAYER_HAS_DISCONNECTED_WITH_REASON, playerName, reason);
|
||||
}
|
||||
chat_history_add(message.c_str());
|
||||
chat_history_add(message);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -3449,7 +3438,7 @@ void network_chat_show_server_greeting()
|
||||
thread_local std::string greeting_formatted;
|
||||
greeting_formatted.assign("{OUTLINE}{GREEN}");
|
||||
greeting_formatted += greeting;
|
||||
chat_history_add(greeting_formatted.c_str());
|
||||
chat_history_add(greeting_formatted);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3856,7 +3845,7 @@ void network_send_password(const std::string& password)
|
||||
// Don't keep private key in memory. There's no need and it may get leaked
|
||||
// when process dump gets collected at some point in future.
|
||||
network._key.Unload();
|
||||
network.Client_Send_AUTH(gConfigNetwork.player_name.c_str(), password, pubkey.c_str(), signature);
|
||||
network.Client_Send_AUTH(gConfigNetwork.player_name, password, pubkey, signature);
|
||||
}
|
||||
|
||||
void network_set_password(const char* password)
|
||||
|
||||
Reference in New Issue
Block a user