diff options
author | Machiavelli <none@none> | 2010-08-18 02:25:52 +0200 |
---|---|---|
committer | Machiavelli <none@none> | 2010-08-18 02:25:52 +0200 |
commit | 87218eadcdeac5ba86a035edfd079958405cb24f (patch) | |
tree | b72020ed0d390953b70d2026bf4c0b16c8271d11 /src/server/authserver/Main.cpp | |
parent | 1ab2bd6d58adf35090ca3a9ef82eee00a14ff507 (diff) |
* 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.
--HG--
branch : trunk
Diffstat (limited to 'src/server/authserver/Main.cpp')
-rw-r--r-- | src/server/authserver/Main.cpp | 22 |
1 files changed, 11 insertions, 11 deletions
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; } |