mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-21 17:54:48 +01:00
Core/Databases: Add hotfix database to world config and prepared statement for it.
Closes #13533
This commit is contained in:
@@ -37,10 +37,12 @@
|
||||
#include "Implementation/LoginDatabase.h"
|
||||
#include "Implementation/CharacterDatabase.h"
|
||||
#include "Implementation/WorldDatabase.h"
|
||||
#include "Implementation/HotfixDatabase.h"
|
||||
|
||||
extern WorldDatabaseWorkerPool WorldDatabase;
|
||||
extern CharacterDatabaseWorkerPool CharacterDatabase;
|
||||
extern LoginDatabaseWorkerPool LoginDatabase;
|
||||
extern HotfixDatabaseWorkerPool HotfixDatabase;
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
24
src/server/shared/Database/Implementation/HotfixDatabase.cpp
Normal file
24
src/server/shared/Database/Implementation/HotfixDatabase.cpp
Normal file
@@ -0,0 +1,24 @@
|
||||
/*
|
||||
* Copyright (C) 2008-2014 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 "HotfixDatabase.h"
|
||||
|
||||
void HotfixDatabaseConnection::DoPrepareStatements()
|
||||
{
|
||||
if (!m_reconnecting)
|
||||
m_stmts.resize(MAX_HOTFIXDATABASE_STATEMENTS);
|
||||
}
|
||||
48
src/server/shared/Database/Implementation/HotfixDatabase.h
Normal file
48
src/server/shared/Database/Implementation/HotfixDatabase.h
Normal file
@@ -0,0 +1,48 @@
|
||||
/*
|
||||
* Copyright (C) 2008-2014 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/>.
|
||||
*/
|
||||
|
||||
#ifndef _HOTFIXDATABASE_H
|
||||
#define _HOTFIXDATABASE_H
|
||||
|
||||
#include "DatabaseWorkerPool.h"
|
||||
#include "MySQLConnection.h"
|
||||
|
||||
class HotfixDatabaseConnection : public MySQLConnection
|
||||
{
|
||||
public:
|
||||
//- Constructors for sync and async connections
|
||||
HotfixDatabaseConnection(MySQLConnectionInfo& connInfo) : MySQLConnection(connInfo) { }
|
||||
HotfixDatabaseConnection(ProducerConsumerQueue<SQLOperation*>* q, MySQLConnectionInfo& connInfo) : MySQLConnection(q, connInfo) { }
|
||||
|
||||
//- Loads database type specific prepared statements
|
||||
void DoPrepareStatements() override;
|
||||
};
|
||||
|
||||
typedef DatabaseWorkerPool<HotfixDatabaseConnection> HotfixDatabaseWorkerPool;
|
||||
|
||||
enum HotfixDatabaseStatements
|
||||
{
|
||||
/* Naming standard for defines:
|
||||
{DB}_{SEL/INS/UPD/DEL/REP}_{Summary of data changed}
|
||||
When updating more than one field, consider looking at the calling function
|
||||
name for a suiting suffix.
|
||||
*/
|
||||
|
||||
MAX_HOTFIXDATABASE_STATEMENTS
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -80,6 +80,7 @@ uint32 _maxCoreStuckTimeInMs(0);
|
||||
|
||||
WorldDatabaseWorkerPool WorldDatabase; ///< Accessor to the world database
|
||||
CharacterDatabaseWorkerPool CharacterDatabase; ///< Accessor to the character database
|
||||
HotfixDatabaseWorkerPool HotfixDatabase; ///< Accessor to the hotfix database
|
||||
LoginDatabaseWorkerPool LoginDatabase; ///< Accessor to the realm/login database
|
||||
Battlenet::RealmHandle realmHandle; ///< Id of the realm
|
||||
Realm realm;
|
||||
@@ -570,6 +571,31 @@ bool StartDB()
|
||||
return false;
|
||||
}
|
||||
|
||||
///- Get hotfix database info from configuration file
|
||||
dbString = sConfigMgr->GetStringDefault("HotfixDatabaseInfo", "");
|
||||
if (dbString.empty())
|
||||
{
|
||||
TC_LOG_ERROR("server.worldserver", "Hotfix database not specified in configuration file");
|
||||
return false;
|
||||
}
|
||||
|
||||
asyncThreads = uint8(sConfigMgr->GetIntDefault("HotfixDatabase.WorkerThreads", 1));
|
||||
if (asyncThreads < 1 || asyncThreads > 32)
|
||||
{
|
||||
TC_LOG_ERROR("server.worldserver", "Hotfix database: invalid number of worker threads specified. "
|
||||
"Please pick a value between 1 and 32.");
|
||||
return false;
|
||||
}
|
||||
|
||||
synchThreads = uint8(sConfigMgr->GetIntDefault("HotfixDatabase.SynchThreads", 2));
|
||||
|
||||
///- Initialize the Hotfix database
|
||||
if (!HotfixDatabase.Open(dbString, asyncThreads, synchThreads))
|
||||
{
|
||||
TC_LOG_ERROR("server.worldserver", "Cannot connect to Hotfix database %s", dbString.c_str());
|
||||
return false;
|
||||
}
|
||||
|
||||
///- Get login database info from configuration file
|
||||
dbString = sConfigMgr->GetStringDefault("LoginDatabaseInfo", "");
|
||||
if (dbString.empty())
|
||||
|
||||
@@ -93,10 +93,12 @@ LogsDir = ""
|
||||
# Default: "127.0.0.1;3306;trinity;trinity;auth" - (LoginDatabaseInfo)
|
||||
# "127.0.0.1;3306;trinity;trinity;world" - (WorldDatabaseInfo)
|
||||
# "127.0.0.1;3306;trinity;trinity;characters" - (CharacterDatabaseInfo)
|
||||
# "127.0.0.1;3306;trinity;trinity;hotfix" - (HotfixDatabaseInfo)
|
||||
|
||||
LoginDatabaseInfo = "127.0.0.1;3306;trinity;trinity;auth"
|
||||
WorldDatabaseInfo = "127.0.0.1;3306;trinity;trinity;world"
|
||||
CharacterDatabaseInfo = "127.0.0.1;3306;trinity;trinity;characters"
|
||||
HotfixDatabaseInfo = "127.0.0.1;3306;trinity;trinity;hotfix"
|
||||
|
||||
#
|
||||
# LoginDatabase.WorkerThreads
|
||||
@@ -108,10 +110,12 @@ CharacterDatabaseInfo = "127.0.0.1;3306;trinity;trinity;characters"
|
||||
# Default: 1 - (LoginDatabase.WorkerThreads)
|
||||
# 1 - (WorldDatabase.WorkerThreads)
|
||||
# 1 - (CharacterDatabase.WorkerThreads)
|
||||
# 1 - (HotfixDatabase.WorkerThreads)
|
||||
|
||||
LoginDatabase.WorkerThreads = 1
|
||||
WorldDatabase.WorkerThreads = 1
|
||||
CharacterDatabase.WorkerThreads = 1
|
||||
HotfixDatabase.WorkerThreads = 1
|
||||
|
||||
#
|
||||
# LoginDatabase.SynchThreads
|
||||
@@ -121,10 +125,12 @@ CharacterDatabase.WorkerThreads = 1
|
||||
# Default: 1 - (LoginDatabase.WorkerThreads)
|
||||
# 1 - (WorldDatabase.WorkerThreads)
|
||||
# 2 - (CharacterDatabase.WorkerThreads)
|
||||
# 1 - (HotfixDatabase.WorkerThreads)
|
||||
|
||||
LoginDatabase.SynchThreads = 1
|
||||
WorldDatabase.SynchThreads = 1
|
||||
CharacterDatabase.SynchThreads = 2
|
||||
HotfixDatabase.SynchThreads = 1
|
||||
|
||||
#
|
||||
# MaxPingTime
|
||||
|
||||
Reference in New Issue
Block a user