diff options
| author | click <none@none> | 2010-12-13 22:37:56 +0100 |
|---|---|---|
| committer | click <none@none> | 2010-12-13 22:37:56 +0100 |
| commit | 26428943423d14e8672682ab1f19925b76c2aa35 (patch) | |
| tree | 1c6d80c03cbf566879e5c899533a2dea5a73dd4c /src/server/shared/Database | |
| parent | 89a33bbf612fcd0d5cea8e1fc5deff87e53aa67e (diff) | |
Core: Add new system for parallelizing client packet processing. Handle WorldSession updates in Map::Update() where we are safe to proceed. Patch by Ambal.
(And clean up tabs and whitespace while rummaging around in there)
Closes issue 5084.
--HG--
branch : trunk
Diffstat (limited to 'src/server/shared/Database')
| -rwxr-xr-x | src/server/shared/Database/DatabaseWorkerPool.h | 18 | ||||
| -rwxr-xr-x | src/server/shared/Database/Implementation/CharacterDatabase.cpp | 12 | ||||
| -rwxr-xr-x | src/server/shared/Database/MySQLConnection.cpp | 4 |
3 files changed, 17 insertions, 17 deletions
diff --git a/src/server/shared/Database/DatabaseWorkerPool.h b/src/server/shared/Database/DatabaseWorkerPool.h index d2743a7d4db..23439487c0d 100755 --- a/src/server/shared/Database/DatabaseWorkerPool.h +++ b/src/server/shared/Database/DatabaseWorkerPool.h @@ -85,7 +85,7 @@ class DatabaseWorkerPool /// Open synchronous connections (direct, blocking operations) m_connections[IDX_SYNCH].resize(synch_threads); - for (uint8 i = 0; i < synch_threads; ++i) + for (uint8 i = 0; i < synch_threads; ++i) { T* t = new T(m_connectionInfo); t->Open(); @@ -121,11 +121,11 @@ class DatabaseWorkerPool { T* t = m_connections[IDX_SYNCH][i]; //while (1) - // if (t->LockIfReady()) -- For some reason deadlocks us + // if (t->LockIfReady()) -- For some reason deadlocks us t->Close(); --m_connectionCount[IDX_SYNCH]; } - + sLog.outSQLDriver("All connections on databasepool %s closed.", m_connectionInfo.database.c_str()); } @@ -156,7 +156,7 @@ class DatabaseWorkerPool { if (!sql) return; - + T* t = GetFreeConnection(); t->Execute(sql); t->Unlock(); @@ -276,7 +276,7 @@ class DatabaseWorkerPool { if (trans.null()) Execute(stmt); - else + else trans->Append(stmt); } @@ -286,7 +286,7 @@ class DatabaseWorkerPool { if (trans.null()) Execute(sql); - else + else trans->Append(sql); } @@ -300,7 +300,7 @@ class DatabaseWorkerPool PreparedStatementTask* task = new PreparedStatementTask(stmt); Enqueue(task); } - + void DirectExecute(PreparedStatement* stmt) { T* t = GetFreeConnection(); @@ -343,7 +343,7 @@ class DatabaseWorkerPool t->Unlock(); } } - + /// Assuming all worker threads are free, every worker thread will receive 1 ping operation request /// If one or more worker threads are busy, the ping operations will not be split evenly, but this doesn't matter /// as the sole purpose is to prevent connections from idling. @@ -356,7 +356,7 @@ class DatabaseWorkerPool { if (!to || !from || !length) return 0; - + T* t = GetFreeConnection(); unsigned long ret = mysql_real_escape_string(t->GetHandle(), to, from, length); t->Unlock(); diff --git a/src/server/shared/Database/Implementation/CharacterDatabase.cpp b/src/server/shared/Database/Implementation/CharacterDatabase.cpp index 1164fcceffe..4a2c100bc7b 100755 --- a/src/server/shared/Database/Implementation/CharacterDatabase.cpp +++ b/src/server/shared/Database/Implementation/CharacterDatabase.cpp @@ -170,7 +170,7 @@ bool CharacterDatabaseConnection::Open() PrepareStatement(CHAR_RESET_GUILD_RANK_BANK_TIME3, "UPDATE guild_member SET BankResetTimeTab3 = 0 WHERE guildid = ? AND rank = ?"); PrepareStatement(CHAR_RESET_GUILD_RANK_BANK_TIME4, "UPDATE guild_member SET BankResetTimeTab4 = 0 WHERE guildid = ? AND rank = ?"); PrepareStatement(CHAR_RESET_GUILD_RANK_BANK_TIME5, "UPDATE guild_member SET BankResetTimeTab5 = 0 WHERE guildid = ? AND rank = ?"); - PrepareStatement(CHAR_LOAD_GUILDS, + PrepareStatement(CHAR_LOAD_GUILDS, // 0 1 2 3 4 5 6 "SELECT g.guildid, g.name, g.leaderguid, g.EmblemStyle, g.EmblemColor, g.BorderStyle, g.BorderColor," // 7 8 9 10 11 12 @@ -179,7 +179,7 @@ bool CharacterDatabaseConnection::Open() // 0 1 2 3 4 PrepareStatement(CHAR_LOAD_GUILD_RANKS, "SELECT guildid, rid, rname, rights, BankMoneyPerDay FROM guild_rank ORDER BY guildid ASC, rid ASC"); PrepareStatement(CHAR_LOAD_CHAR_DATA_FOR_GUILD, "SELECT name, level, class, zone, account FROM characters WHERE guid = ?"); - PrepareStatement(CHAR_LOAD_GUILD_MEMBERS, + PrepareStatement(CHAR_LOAD_GUILD_MEMBERS, // 0 1 2 3 4 5 6 "SELECT guildid, gm.guid, rank, pnote, offnote, BankResetTimeMoney, BankRemMoney," // 7 8 9 10 11 12 @@ -189,18 +189,18 @@ bool CharacterDatabaseConnection::Open() // 19 20 21 22 23 24 "c.name, c.level, c.class, c.zone, c.account, c.logout_time " "FROM guild_member gm LEFT JOIN characters c ON c.guid = gm.guid ORDER BY guildid ASC"); - PrepareStatement(CHAR_LOAD_GUILD_BANK_RIGHTS, + PrepareStatement(CHAR_LOAD_GUILD_BANK_RIGHTS, // 0 1 2 3 4 "SELECT guildid, TabId, rid, gbright, SlotPerDay FROM guild_bank_right ORDER BY guildid ASC, TabId ASC"); // 0 1 2 3 4 PrepareStatement(CHAR_LOAD_GUILD_BANK_TABS, "SELECT guildid, TabId, TabName, TabIcon, TabText FROM guild_bank_tab ORDER BY guildid ASC, TabId ASC"); - PrepareStatement(CHAR_LOAD_GUILD_EVENTLOGS, + PrepareStatement(CHAR_LOAD_GUILD_EVENTLOGS, // 0 1 2 3 4 5 6 "SELECT guildid, LogGuid, EventType, PlayerGuid1, PlayerGuid2, NewRank, TimeStamp FROM guild_eventlog ORDER BY TimeStamp DESC, LogGuid DESC"); - PrepareStatement(CHAR_LOAD_GUILD_BANK_EVENTLOGS, + PrepareStatement(CHAR_LOAD_GUILD_BANK_EVENTLOGS, // 0 1 2 3 4 5 6 7 8 "SELECT guildid, TabId, LogGuid, EventType, PlayerGuid, ItemOrMoney, ItemStackCount, DestTabId, TimeStamp FROM guild_bank_eventlog ORDER BY TimeStamp DESC, LogGuid DESC"); - PrepareStatement(CHAR_LOAD_GUILD_BANK_ITEMS, + PrepareStatement(CHAR_LOAD_GUILD_BANK_ITEMS, // 0 1 2 3 4 5 6 7 8 9 10 "SELECT creatorGuid, giftCreatorGuid, count, duration, charges, flags, enchantments, randomPropertyId, durability, playedTime, text, " // 11 12 13 14 15 diff --git a/src/server/shared/Database/MySQLConnection.cpp b/src/server/shared/Database/MySQLConnection.cpp index 20c614b5333..84d1948622e 100755 --- a/src/server/shared/Database/MySQLConnection.cpp +++ b/src/server/shared/Database/MySQLConnection.cpp @@ -210,11 +210,11 @@ bool MySQLConnection::Execute(PreparedStatement* stmt) m_mStmt->ClearParameters(); return false; } - + if (sLog.GetSQLDriverQueryLogging()) sLog.outSQLDriver("[%u ms] Prepared SQL: %u on database `%s`", getMSTimeDiff(_s, getMSTime()), index, m_connectionInfo.database.c_str()); - + m_mStmt->ClearParameters(); return true; } |
