Skip to content

Commit

Permalink
Core/Database: Move singleton instances into compilation units
Browse files Browse the repository at this point in the history
* Fixes issues when building shared libraries
  (prevents gcc and clang from providing several instance)
* Also instantiate the database worker pools in DatabaseEnv.cpp now.

(cherry picked from commit a8fe7f6)
  • Loading branch information
Naios committed Mar 11, 2016
1 parent fbe724f commit 3a4ec8b
Show file tree
Hide file tree
Showing 7 changed files with 28 additions and 6 deletions.
1 change: 1 addition & 0 deletions src/server/authserver/CMakeLists.txt
Expand Up @@ -58,6 +58,7 @@ include_directories(
${CMAKE_SOURCE_DIR}/src/server/database
${CMAKE_SOURCE_DIR}/src/server/database/Database
${CMAKE_SOURCE_DIR}/src/server/database/Logging
${CMAKE_SOURCE_DIR}/src/server/database/Updater
${CMAKE_SOURCE_DIR}/src/server/shared
${CMAKE_SOURCE_DIR}/src/server/shared/Networking
${CMAKE_SOURCE_DIR}/src/server/shared/Packets
Expand Down
1 change: 0 additions & 1 deletion src/server/authserver/Main.cpp
Expand Up @@ -76,7 +76,6 @@ boost::asio::deadline_timer* _dbPingTimer;
uint32 _dbPingInterval;
boost::asio::deadline_timer* _banExpiryCheckTimer;
uint32 _banExpiryCheckInterval;
LoginDatabaseWorkerPool LoginDatabase;

int main(int argc, char** argv)
{
Expand Down
22 changes: 22 additions & 0 deletions src/server/database/Database/DatabaseEnv.cpp
@@ -0,0 +1,22 @@
/*
* Copyright (C) 2008-2016 TrinityCore <http://www.trinitycore.org/>
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the
* Free Software Foundation; either version 2 of the License, or (at your
* option) any later version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License along
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/

#include "DatabaseEnv.h"

WorldDatabaseWorkerPool WorldDatabase;
CharacterDatabaseWorkerPool CharacterDatabase;
LoginDatabaseWorkerPool LoginDatabase;
4 changes: 3 additions & 1 deletion src/server/database/Database/DatabaseEnv.h
Expand Up @@ -38,9 +38,11 @@
#include "Implementation/CharacterDatabase.h"
#include "Implementation/WorldDatabase.h"

/// Accessor to the world database
extern WorldDatabaseWorkerPool WorldDatabase;
/// Accessor to the character database
extern CharacterDatabaseWorkerPool CharacterDatabase;
/// Accessor to the realm/login database
extern LoginDatabaseWorkerPool LoginDatabase;

#endif

2 changes: 1 addition & 1 deletion src/server/database/Database/DatabaseLoader.h
Expand Up @@ -19,7 +19,7 @@
#define DatabaseLoader_h__

#include "DatabaseWorkerPool.h"
#include "DatabaseEnv.h"
#include "DBUpdater.h"

#include <functional>
#include <stack>
Expand Down
1 change: 1 addition & 0 deletions src/server/worldserver/CMakeLists.txt
Expand Up @@ -63,6 +63,7 @@ include_directories(
${CMAKE_SOURCE_DIR}/src/server/database/
${CMAKE_SOURCE_DIR}/src/server/database/Database
${CMAKE_SOURCE_DIR}/src/server/database/Logging
${CMAKE_SOURCE_DIR}/src/server/database/Updater
${CMAKE_SOURCE_DIR}/src/server/game
${CMAKE_SOURCE_DIR}/src/server/game/Accounts
${CMAKE_SOURCE_DIR}/src/server/game/Addons
Expand Down
3 changes: 0 additions & 3 deletions src/server/worldserver/Main.cpp
Expand Up @@ -78,9 +78,6 @@ uint32 _worldLoopCounter(0);
uint32 _lastChangeMsTime(0);
uint32 _maxCoreStuckTimeInMs(0);

WorldDatabaseWorkerPool WorldDatabase; ///< Accessor to the world database
CharacterDatabaseWorkerPool CharacterDatabase; ///< Accessor to the character database
LoginDatabaseWorkerPool LoginDatabase; ///< Accessor to the realm/login database
Realm realm;

void SignalHandler(const boost::system::error_code& error, int signalNumber);
Expand Down

0 comments on commit 3a4ec8b

Please sign in to comment.