aboutsummaryrefslogtreecommitdiff
path: root/src/server/database/Database/DatabaseEnvFwd.h
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2019-07-27 10:52:33 +0200
committerGiacomo Pozzoni <giacomopoz@gmail.com>2020-03-31 13:42:01 +0000
commit635b8d52d58f7d502fc249c11c1044923e80935f (patch)
tree3305f07a454da2d7385e1cd60fd20a3dde5e2cec /src/server/database/Database/DatabaseEnvFwd.h
parentfe1003bdbd88e2bccf2ac91ffd18804a6d9b6fb3 (diff)
Core/DBLayer: Prevent committing transactions started on a different database
(cherry picked from commit f6e2b8cdc1c8a3dd291947f67566b41dac116622) # Conflicts: # src/server/bnetserver/REST/LoginRESTService.cpp # src/server/database/Database/DatabaseWorkerPool.cpp # src/server/database/Database/DatabaseWorkerPool.h # src/server/database/Database/Implementation/HotfixDatabase.h # src/server/database/Database/MySQLConnection.h # src/server/database/Database/Transaction.cpp # src/server/database/Database/Transaction.h # src/server/game/Achievements/AchievementMgr.cpp # src/server/game/Achievements/AchievementMgr.h # src/server/game/AuctionHouse/AuctionHouseMgr.cpp # src/server/game/AuctionHouse/AuctionHouseMgr.h # src/server/game/BattlePets/BattlePetMgr.cpp # src/server/game/BattlePets/BattlePetMgr.h # src/server/game/BlackMarket/BlackMarketMgr.cpp # src/server/game/BlackMarket/BlackMarketMgr.h # src/server/game/Entities/Creature/Creature.cpp # src/server/game/Entities/Item/Item.cpp # src/server/game/Entities/Item/Item.h # src/server/game/Entities/Player/CollectionMgr.cpp # src/server/game/Entities/Player/CollectionMgr.h # src/server/game/Entities/Player/Player.cpp # src/server/game/Entities/Player/Player.h # src/server/game/Garrison/Garrison.cpp # src/server/game/Garrison/Garrison.h # src/server/game/Groups/Group.cpp # src/server/game/Guilds/Guild.cpp # src/server/game/Guilds/Guild.h # src/server/game/Guilds/GuildFinderMgr.cpp # src/server/game/Handlers/BlackMarketHandler.cpp # src/server/game/Handlers/CalendarHandler.cpp # src/server/game/Handlers/CharacterHandler.cpp # src/server/game/Handlers/MailHandler.cpp # src/server/game/Handlers/PetHandler.cpp # src/server/game/Handlers/PetitionsHandler.cpp # src/server/game/Mails/Mail.cpp # src/server/game/Pools/PoolMgr.cpp # src/server/game/Quests/QuestObjectiveCriteriaMgr.cpp # src/server/game/Quests/QuestObjectiveCriteriaMgr.h # src/server/game/Scenarios/InstanceScenario.cpp # src/server/game/Server/WorldSession.cpp # src/server/game/Server/WorldSession.h # src/server/game/Spells/SpellHistory.cpp # src/server/game/Support/SupportMgr.cpp # src/server/game/Tools/PlayerDump.cpp # src/server/scripts/Commands/cs_misc.cpp
Diffstat (limited to 'src/server/database/Database/DatabaseEnvFwd.h')
-rw-r--r--src/server/database/Database/DatabaseEnvFwd.h22
1 files changed, 21 insertions, 1 deletions
diff --git a/src/server/database/Database/DatabaseEnvFwd.h b/src/server/database/Database/DatabaseEnvFwd.h
index 1fe95c54a5c..f6f7653c3f9 100644
--- a/src/server/database/Database/DatabaseEnvFwd.h
+++ b/src/server/database/Database/DatabaseEnvFwd.h
@@ -28,11 +28,21 @@ typedef std::shared_ptr<ResultSet> QueryResult;
typedef std::future<QueryResult> QueryResultFuture;
typedef std::promise<QueryResult> QueryResultPromise;
+class CharacterDatabaseConnection;
+class HotfixDatabaseConnection;
+class LoginDatabaseConnection;
+class WorldDatabaseConnection;
+
class PreparedStatementBase;
template<typename T>
class PreparedStatement;
+using CharacterDatabasePreparedStatement = PreparedStatement<CharacterDatabaseConnection>;
+using HotfixDatabasePreparedStatement = PreparedStatement<HotfixDatabaseConnection>;
+using LoginDatabasePreparedStatement = PreparedStatement<LoginDatabaseConnection>;
+using WorldDatabasePreparedStatement = PreparedStatement<WorldDatabaseConnection>;
+
class PreparedResultSet;
typedef std::shared_ptr<PreparedResultSet> PreparedQueryResult;
typedef std::future<PreparedQueryResult> PreparedQueryResultFuture;
@@ -40,8 +50,18 @@ typedef std::promise<PreparedQueryResult> PreparedQueryResultPromise;
class QueryCallback;
+class TransactionBase;
+
+template<typename T>
class Transaction;
-typedef std::shared_ptr<Transaction> SQLTransaction;
+
+template<typename T>
+using SQLTransaction = std::shared_ptr<Transaction<T>>;
+
+using CharacterDatabaseTransaction = SQLTransaction<CharacterDatabaseConnection>;
+using HotfixDatabaseTransaction = SQLTransaction<HotfixDatabaseConnection>;
+using LoginDatabaseTransaction = SQLTransaction<LoginDatabaseConnection>;
+using WorldDatabaseTransaction = SQLTransaction<WorldDatabaseConnection>;
class SQLQueryHolder;
typedef std::future<SQLQueryHolder*> QueryResultHolderFuture;