From 87218eadcdeac5ba86a035edfd079958405cb24f Mon Sep 17 00:00:00 2001 From: Machiavelli Date: Wed, 18 Aug 2010 02:25:52 +0200 Subject: * HIGHLY EXPERIMENTAL - USE AT OWN RISK * Database Layer: - Implement connection pooling: Instead of 1 delay thread per database, you can configure between 1 and 32 worker threads that have a seperate thread in the core and have a seperate connection to the MySQL server (based on raczman/Albator´s database layer for Trinitycore3) - Implement a configurable thread bundle for synchroneous requests from seperate core threads (see worldserver.conf.dist for more info) - Every mapupdate thread now has its seperate MySQL connection to the world and characters database - Drop inconsistent PExecuteLog function - query logging will be implemented CONSISTENTLY later - Drop current prepared statement interface - this will be done *properly* later - You´ll need to update your worldserver.conf and authserver.conf - You´re recommended to make a backup of your databases before using this. * HIGHLY EXPERIMENTAL - USE AT OWN RISK * * HIGHLY EXPERIMENTAL - USE AT OWN RISK * etc. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --HG-- branch : trunk --- src/server/authserver/Main.cpp | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) (limited to 'src/server/authserver/Main.cpp') diff --git a/src/server/authserver/Main.cpp b/src/server/authserver/Main.cpp index 88a98cd6cdb..849e1f71248 100644 --- a/src/server/authserver/Main.cpp +++ b/src/server/authserver/Main.cpp @@ -24,7 +24,6 @@ #include "Common.h" #include "Database/DatabaseEnv.h" -#include "Database/PreparedStatements.h" #include "Configuration/Config.h" #include "Log.h" @@ -315,7 +314,7 @@ extern int main(int argc, char **argv) { loopCounter = 0; sLog.outDetail("Ping MySQL to keep connection alive"); - sPreparedStatement.Query(&LoginDatabase, "auth_ping"); + LoginDatabase.Query("SELECT 1 FROM realmlist"); } #ifdef _WIN32 if (m_ServiceStatus == 0) stopEvent = true; @@ -323,9 +322,8 @@ extern int main(int argc, char **argv) #endif } - ///- Wait for the delay thread to exit - LoginDatabase.ThreadEnd(); - LoginDatabase.HaltDelayThread(); + ///- Close the Database Pool + LoginDatabase.Close(); sLog.outString("Halting process..."); return 0; @@ -341,16 +339,18 @@ bool StartDB() return false; } - if (!LoginDatabase.Initialize(dbstring.c_str())) + uint8 num_threads = sConfig.GetIntDefault("LoginDatabase.WorkerThreads", 1); + if (num_threads < 1 || num_threads > 32) + { + sLog.outError("Improper value specified for LoginDatabase.WorkerThreads, defaulting to 1."); + num_threads = 1; + } + + if (!LoginDatabase.Open(dbstring.c_str(), num_threads)) { sLog.outError("Cannot connect to database"); return false; } - LoginDatabase.ThreadStart(); - - uint32 count = 0; - sPreparedStatement.LoadAuthserver(&LoginDatabase, count); - sLog.outString("Loaded %u prepared MySQL statements for auth DB.", count); return true; } -- cgit v1.2.3