From 957aef236612d8bd7fb5a33e53cc010fbc1e987c Mon Sep 17 00:00:00 2001 From: DarthArgus Date: Wed, 21 Dec 2016 11:09:07 +0000 Subject: [PATCH] we can build with newer compilers but _must_ use the gcc 5.x libs --- CMakeLists.txt | 11 +++++--- .../src/shared/GameServerConnection.cpp | 22 ++++++---------- .../src/shared/CentralServerConnection.cpp | 25 ++++++++----------- .../transferServer/TransferCharacterData.h | 3 ++- .../src/shared/DataResourceList.h | 5 +++- 5 files changed, 31 insertions(+), 35 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index e6e79957..74718ccc 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -84,11 +84,14 @@ elseif(UNIX) set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -Ofast \ -fno-signed-zeros -freciprocal-math -ffp-contract=fast \ -fno-threadsafe-statics -fslp-vectorize-aggressive -fslp-vectorize \ - -fno-stack-protector -fstrict-enums -fstrict-vtable-pointers \ - -fno-coverage-mapping -fno-spell-checking -fshort-enums -finline-functions \ - -finline-hint-functions -fno-unroll-loops -Wno-undefined-var-template") + -fno-stack-protector -fstrict-enums -fno-spell-checking \ + -fno-coverage-mapping -fstrict-vtable-pointers -finline-functions \ + -finline-hint-functions -fshort-enums -fno-unroll-loops") + + # these only work on 3.9+ -finline-functions -finline-hint-functions + # these only work on 3.8+ -fno-coverage-mapping -fstrict-vtable-pointers - set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -ggdb -Wno-undefined-var-template") + set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -ggdb") elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU") # O3 and Ofast include one or more flags that cause java to crash when using gcc6 set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O2 -fno-signed-zeros -freciprocal-math -fno-unroll-loops -fno-tree-loop-optimize") diff --git a/engine/server/application/CentralServer/src/shared/GameServerConnection.cpp b/engine/server/application/CentralServer/src/shared/GameServerConnection.cpp index bb70c1c5..ac6edcb8 100755 --- a/engine/server/application/CentralServer/src/shared/GameServerConnection.cpp +++ b/engine/server/application/CentralServer/src/shared/GameServerConnection.cpp @@ -33,9 +33,8 @@ #include "serverNetworkMessages/UploadCharacterMessage.h" #include "sharedLog/Log.h" #include "sharedNetworkMessages/ConsoleChannelMessages.h" -#include "unicodeArchive/UnicodeArchive.h" - #include "sharedNetworkMessages/GenericValueTypeMessage.h" +#include "unicodeArchive/UnicodeArchive.h" #include "sharedFoundation/CrcConstexpr.hpp" @@ -127,16 +126,11 @@ void GameServerConnection::onReceive(Archive::ByteStream const &message) } case constcrc("TransferReplyNameValidation") : { - GenericValueTypeMessage > const replyNameValidation(ri); - auto i = replyNameValidation.getValue().begin(); + GenericValueTypeMessage > const replyNameValidation(ri); - if (i == replyNameValidation.getValue().end()) { - break; - } - - if (i->second.getTransferRequestSource() == TransferRequestMoveValidation::TRS_transfer_server) + if (replyNameValidation.getValue().second.getTransferRequestSource() == TransferRequestMoveValidation::TRS_transfer_server) { - LOG("CustomerService", ("CharacterTransfer: Received TransferReplyNameValidation from GameServer, forwarding to TransferServer : %s", i->second.toString().c_str())); + LOG("CustomerService", ("CharacterTransfer: Received TransferReplyNameValidation from GameServer, forwarding to TransferServer : %s", replyNameValidation.getValue().second.toString().c_str())); CentralServer::getInstance().sendToTransferServer(replyNameValidation); } else @@ -144,14 +138,14 @@ void GameServerConnection::onReceive(Archive::ByteStream const &message) // pass reply back to the source galaxy for handling, which is to // either display an error message to the user if the request failed, // or to start the transfer process if the request succeeds - LOG("CustomerService", ("CharacterTransfer: Received TransferReplyNameValidation from GameServer, forwarding to source galaxy CentralServer : %s", i->second.toString().c_str())); + LOG("CustomerService", ("CharacterTransfer: Received TransferReplyNameValidation from GameServer, forwarding to source galaxy CentralServer : %s", replyNameValidation.getValue().second.toString().c_str())); CentralServer::getInstance().sendToArbitraryLoginServer(replyNameValidation); // if the request succeeded, also disconnect any clients with a connection to SWG services on this (the target) galaxy - if (i->second.getIsValidName() && (i->second.getTransferRequestSource() != TransferRequestMoveValidation::TRS_ingame_freects_command_validate) && (i->second.getTransferRequestSource() != TransferRequestMoveValidation::TRS_ingame_cts_command_validate)) + if (replyNameValidation.getValue().second.getIsValidName() && (replyNameValidation.getValue().second.getTransferRequestSource() != TransferRequestMoveValidation::TRS_ingame_freects_command_validate) && (replyNameValidation.getValue().second.getTransferRequestSource() != TransferRequestMoveValidation::TRS_ingame_cts_command_validate)) { - GenericValueTypeMessage kickSource("TransferKickConnectedClients", i->second.getSourceStationId()); - GenericValueTypeMessage kickDestination("TransferKickConnectedClients", i->second.getDestinationStationId()); + GenericValueTypeMessage kickSource("TransferKickConnectedClients", replyNameValidation.getValue().second.getSourceStationId()); + GenericValueTypeMessage kickDestination("TransferKickConnectedClients", replyNameValidation.getValue().second.getDestinationStationId()); CentralServer::getInstance().sendToAllLoginServers(kickSource); CentralServer::getInstance().sendToAllLoginServers(kickDestination); CentralServer::getInstance().sendToAllConnectionServers(kickSource, true); diff --git a/engine/server/application/TransferServer/src/shared/CentralServerConnection.cpp b/engine/server/application/TransferServer/src/shared/CentralServerConnection.cpp index ea3b1637..ece4ff3d 100755 --- a/engine/server/application/TransferServer/src/shared/CentralServerConnection.cpp +++ b/engine/server/application/TransferServer/src/shared/CentralServerConnection.cpp @@ -228,32 +228,27 @@ void CentralServerConnection::onReceive(const Archive::ByteStream & message) } case constcrc("TransferReplyNameValidation") : { - const GenericValueTypeMessage > replyNameValidation(ri); - auto i = replyNameValidation.getValue().begin(); - - if (i == replyNameValidation.getValue().end()) { - break; - } - - if(!i->second.getIsMoveRequest()) + const GenericValueTypeMessage > replyNameValidation(ri); + if(!replyNameValidation.getValue().second.getIsMoveRequest()) { - LOG("CustomerService", ("CharacterTransfer: Received replyNameValidation for move validation request. (%s) %s", i->first.c_str(), i->second.toString().c_str())); - TransferServer::replyValidateMove(i->second); + LOG("CustomerService", ("CharacterTransfer: Received replyNameValidation for move validation request. (%s) %s", replyNameValidation.getValue().first.c_str(), replyNameValidation.getValue().second.toString().c_str())); + TransferServer::replyValidateMove(replyNameValidation.getValue().second); } else { - if(TransferServer::isRename(i->second)) + if(TransferServer::isRename(replyNameValidation.getValue().second)) { - LOG("CustomerService", ("CharacterTransfer: Received replyNameValidation for rename request, starting character rename protocol. (%s) %s", i->first.c_str(), i->second.toString().c_str())); - const GenericValueTypeMessage renameCharacter("TransferRenameCharacter", i->second); - CentralServerConnection * centralServerConnection = CentralServerConnection::getCentralServerConnectionForGalaxy(i->second.getSourceGalaxy()); + LOG("CustomerService", ("CharacterTransfer: Received replyNameValidation for rename request, starting character rename protocol. (%s) %s", replyNameValidation.getValue().first.c_str(), replyNameValidation.getValue().second.toString().c_str())); + const GenericValueTypeMessage renameCharacter("TransferRenameCharacter", replyNameValidation.getValue().second); + CentralServerConnection * centralServerConnection = CentralServerConnection::getCentralServerConnectionForGalaxy(replyNameValidation.getValue().second.getSourceGalaxy()); if(centralServerConnection) { centralServerConnection->send(renameCharacter, true); } else { - TransferServer::transferCreateCharacterFailed(i->second); } + TransferServer::transferCreateCharacterFailed(replyNameValidation.getValue().second); + } } else { diff --git a/engine/server/library/serverNetworkMessages/src/shared/transferServer/TransferCharacterData.h b/engine/server/library/serverNetworkMessages/src/shared/transferServer/TransferCharacterData.h index 60f9c1f4..528f873d 100755 --- a/engine/server/library/serverNetworkMessages/src/shared/transferServer/TransferCharacterData.h +++ b/engine/server/library/serverNetworkMessages/src/shared/transferServer/TransferCharacterData.h @@ -104,8 +104,9 @@ public: void setCSToolId (const unsigned int toolId); - TransferCharacterData(); private: + TransferCharacterData(); + friend class Archive::AutoVariable; friend struct std::pair; friend void Archive::get(Archive::ReadIterator & source, TransferCharacterData & target); diff --git a/engine/shared/library/sharedFoundation/src/shared/DataResourceList.h b/engine/shared/library/sharedFoundation/src/shared/DataResourceList.h index a86629e5..1af4b29f 100755 --- a/engine/shared/library/sharedFoundation/src/shared/DataResourceList.h +++ b/engine/shared/library/sharedFoundation/src/shared/DataResourceList.h @@ -7,6 +7,9 @@ // //======================================================================== +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wundefined-var-template" + #ifndef _INCLUDED_DataResourceList_H #define _INCLUDED_DataResourceList_H @@ -419,5 +422,5 @@ void DataResourceList::garbageCollect () } //---------------------------------------------------------------------- - +#pragma clang diagnostic pop #endif // _INCLUDED_DataResourceList_H