diff options
author | leak <leak@bitmx.net> | 2014-07-20 00:39:43 +0200 |
---|---|---|
committer | leak <leak@bitmx.net> | 2014-07-20 00:40:08 +0200 |
commit | dce92611f3ff33e7db0a7234d611f5bffb0cc45f (patch) | |
tree | 19f51fac4cccdac6d4e81466a5e643c244239106 | |
parent | d2c120f2c2920760c56f1c2d1954bb28b9f2b678 (diff) |
Refactored singletons to enable proper deconstruction during shutdown
39 files changed, 83 insertions, 84 deletions
diff --git a/src/server/authserver/Main.cpp b/src/server/authserver/Main.cpp index 701f65c0c14..0f200db6af4 100644 --- a/src/server/authserver/Main.cpp +++ b/src/server/authserver/Main.cpp @@ -99,9 +99,9 @@ int main(int argc, char** argv) return 1; // Get the list of realms for the server - sRealmList.Initialize(_ioService, sConfigMgr->GetIntDefault("RealmsStateUpdateDelay", 20)); + sRealmList->Initialize(_ioService, sConfigMgr->GetIntDefault("RealmsStateUpdateDelay", 20)); - if (sRealmList.size() == 0) + if (sRealmList->size() == 0) { TC_LOG_ERROR("server.authserver", "No valid realms specified."); return 1; diff --git a/src/server/authserver/Realms/RealmList.h b/src/server/authserver/Realms/RealmList.h index b1c77d5a4b5..64419351b57 100644 --- a/src/server/authserver/Realms/RealmList.h +++ b/src/server/authserver/Realms/RealmList.h @@ -62,10 +62,10 @@ class RealmList public: typedef std::map<std::string, Realm> RealmMap; - static RealmList& instance() + static RealmList* instance() { - static RealmList *instance = new RealmList(); - return *instance; + static RealmList instance; + return &instance; } ~RealmList(); diff --git a/src/server/authserver/Server/AuthSession.cpp b/src/server/authserver/Server/AuthSession.cpp index f518dc7593b..987d6dca03f 100644 --- a/src/server/authserver/Server/AuthSession.cpp +++ b/src/server/authserver/Server/AuthSession.cpp @@ -797,13 +797,13 @@ bool AuthSession::_HandleRealmList() uint32 id = fields[0].GetUInt32(); // Update realm list if need - sRealmList.UpdateIfNeed(); + sRealmList->UpdateIfNeed(); // Circle through realms in the RealmList and construct the return packet (including # of user characters in each realm) ByteBuffer pkt; size_t RealmListSize = 0; - for (RealmList::RealmMap::const_iterator i = sRealmList.begin(); i != sRealmList.end(); ++i) + for (RealmList::RealmMap::const_iterator i = sRealmList->begin(); i != sRealmList->end(); ++i) { const Realm &realm = i->second; // don't work with realms which not compatible with the client diff --git a/src/server/game/AI/SmartScripts/SmartScriptMgr.h b/src/server/game/AI/SmartScripts/SmartScriptMgr.h index 0380ec8bae9..d4afba54498 100644 --- a/src/server/game/AI/SmartScripts/SmartScriptMgr.h +++ b/src/server/game/AI/SmartScripts/SmartScriptMgr.h @@ -1403,8 +1403,8 @@ class SmartWaypointMgr public: static SmartWaypointMgr* instance() { - static SmartWaypointMgr* instance = new SmartWaypointMgr(); - return instance; + static SmartWaypointMgr instance; + return &instance; } void LoadFromDB(); @@ -1439,8 +1439,8 @@ class SmartAIMgr public: static SmartAIMgr* instance() { - static SmartAIMgr* instance = new SmartAIMgr(); - return instance; + static SmartAIMgr instance; + return &instance; } void LoadSmartAIFromDB(); diff --git a/src/server/game/Accounts/AccountMgr.h b/src/server/game/Accounts/AccountMgr.h index 2f3137ae3cd..c4b4bd93728 100644 --- a/src/server/game/Accounts/AccountMgr.h +++ b/src/server/game/Accounts/AccountMgr.h @@ -57,8 +57,8 @@ class AccountMgr public: static AccountMgr* instance() { - static AccountMgr* instance = new AccountMgr(); - return instance; + static AccountMgr instance; + return &instance; } AccountOpResult CreateAccount(std::string username, std::string password, std::string email); diff --git a/src/server/game/Achievements/AchievementMgr.h b/src/server/game/Achievements/AchievementMgr.h index 7128b8d6318..219a8fd52fb 100644 --- a/src/server/game/Achievements/AchievementMgr.h +++ b/src/server/game/Achievements/AchievementMgr.h @@ -310,8 +310,8 @@ class AchievementGlobalMgr public: static AchievementGlobalMgr* instance() { - static AchievementGlobalMgr* instance = new AchievementGlobalMgr(); - return instance; + static AchievementGlobalMgr instance; + return &instance; } AchievementCriteriaEntryList const& GetAchievementCriteriaByType(AchievementCriteriaTypes type) const diff --git a/src/server/game/AuctionHouse/AuctionHouseMgr.h b/src/server/game/AuctionHouse/AuctionHouseMgr.h index 0f42a5833a2..597da13cb1b 100644 --- a/src/server/game/AuctionHouse/AuctionHouseMgr.h +++ b/src/server/game/AuctionHouse/AuctionHouseMgr.h @@ -142,8 +142,8 @@ class AuctionHouseMgr public: static AuctionHouseMgr* instance() { - static AuctionHouseMgr* instance = new AuctionHouseMgr(); - return instance; + static AuctionHouseMgr instance; + return &instance; } typedef std::unordered_map<uint32, Item*> ItemMap; diff --git a/src/server/game/Battlefield/BattlefieldMgr.h b/src/server/game/Battlefield/BattlefieldMgr.h index 9b51fd7710e..65b63ea2952 100644 --- a/src/server/game/Battlefield/BattlefieldMgr.h +++ b/src/server/game/Battlefield/BattlefieldMgr.h @@ -29,8 +29,8 @@ class BattlefieldMgr public: static BattlefieldMgr* instance() { - static BattlefieldMgr* instance = new BattlefieldMgr(); - return instance; + static BattlefieldMgr instance; + return &instance; } // create battlefield events diff --git a/src/server/game/Battlegrounds/ArenaTeamMgr.h b/src/server/game/Battlegrounds/ArenaTeamMgr.h index 9a4c1184133..118e9674fbf 100644 --- a/src/server/game/Battlegrounds/ArenaTeamMgr.h +++ b/src/server/game/Battlegrounds/ArenaTeamMgr.h @@ -29,8 +29,8 @@ private: public: static ArenaTeamMgr* instance() { - static ArenaTeamMgr* instance = new ArenaTeamMgr(); - return instance; + static ArenaTeamMgr instance; + return &instance; } typedef std::unordered_map<uint32, ArenaTeam*> ArenaTeamContainer; diff --git a/src/server/game/Battlegrounds/BattlegroundMgr.h b/src/server/game/Battlegrounds/BattlegroundMgr.h index 21b87d2bb1f..c21c34d1a10 100644 --- a/src/server/game/Battlegrounds/BattlegroundMgr.h +++ b/src/server/game/Battlegrounds/BattlegroundMgr.h @@ -64,8 +64,8 @@ class BattlegroundMgr public: static BattlegroundMgr* instance() { - static BattlegroundMgr* instance = new BattlegroundMgr(); - return instance; + static BattlegroundMgr instance; + return &instance; } void Update(uint32 diff); diff --git a/src/server/game/Calendar/CalendarMgr.h b/src/server/game/Calendar/CalendarMgr.h index 6eecd2a4e8b..e238119defb 100644 --- a/src/server/game/Calendar/CalendarMgr.h +++ b/src/server/game/Calendar/CalendarMgr.h @@ -282,8 +282,8 @@ class CalendarMgr public: static CalendarMgr* instance() { - static CalendarMgr* instance = new CalendarMgr(); - return instance; + static CalendarMgr instance; + return &instance; } void LoadFromDB(); diff --git a/src/server/game/Chat/Channels/ChannelMgr.h b/src/server/game/Chat/Channels/ChannelMgr.h index 0fd5cdbfe24..f3ca9694176 100644 --- a/src/server/game/Chat/Channels/ChannelMgr.h +++ b/src/server/game/Chat/Channels/ChannelMgr.h @@ -37,8 +37,8 @@ class ChannelMgr public: static ChannelMgr* instance() { - static ChannelMgr* instance = new ChannelMgr(); - return instance; + static ChannelMgr instance; + return &instance; } static ChannelMgr * forTeam(uint32 team); diff --git a/src/server/game/Conditions/ConditionMgr.h b/src/server/game/Conditions/ConditionMgr.h index a78434776e0..d5428ed2d14 100644 --- a/src/server/game/Conditions/ConditionMgr.h +++ b/src/server/game/Conditions/ConditionMgr.h @@ -230,8 +230,8 @@ class ConditionMgr static ConditionMgr* instance() { - static ConditionMgr* instance = new ConditionMgr(); - return instance; + static ConditionMgr instance; + return &instance; } void LoadConditions(bool isReload = false); diff --git a/src/server/game/DungeonFinding/LFGMgr.h b/src/server/game/DungeonFinding/LFGMgr.h index 3b38c23232c..547d026dee0 100644 --- a/src/server/game/DungeonFinding/LFGMgr.h +++ b/src/server/game/DungeonFinding/LFGMgr.h @@ -298,8 +298,8 @@ class LFGMgr public: static LFGMgr* instance() { - static LFGMgr* instance = new LFGMgr(); - return instance; + static LFGMgr instance; + return &instance; } // Functions used outside lfg namespace diff --git a/src/server/game/Entities/Creature/CreatureGroups.h b/src/server/game/Entities/Creature/CreatureGroups.h index 29832e4ff76..f53de0d48f1 100644 --- a/src/server/game/Entities/Creature/CreatureGroups.h +++ b/src/server/game/Entities/Creature/CreatureGroups.h @@ -47,8 +47,8 @@ class FormationMgr public: static FormationMgr* instance() { - static FormationMgr* instance = new FormationMgr(); - return instance; + static FormationMgr instance; + return &instance; } void AddCreatureToGroup(uint32 group_id, Creature* creature); diff --git a/src/server/game/Entities/Player/SocialMgr.h b/src/server/game/Entities/Player/SocialMgr.h index 68c25fbf648..3ed41a847ef 100644 --- a/src/server/game/Entities/Player/SocialMgr.h +++ b/src/server/game/Entities/Player/SocialMgr.h @@ -129,8 +129,8 @@ class SocialMgr public: static SocialMgr* instance() { - static SocialMgr* instance = new SocialMgr(); - return instance; + static SocialMgr instance; + return &instance; } // Misc diff --git a/src/server/game/Events/GameEventMgr.h b/src/server/game/Events/GameEventMgr.h index 94beb9912d5..e5c00da5e91 100644 --- a/src/server/game/Events/GameEventMgr.h +++ b/src/server/game/Events/GameEventMgr.h @@ -101,8 +101,8 @@ class GameEventMgr public: static GameEventMgr* instance() { - static GameEventMgr* instance = new GameEventMgr(); - return instance; + static GameEventMgr instance; + return &instance; } typedef std::set<uint16> ActiveEvents; diff --git a/src/server/game/Globals/ObjectAccessor.h b/src/server/game/Globals/ObjectAccessor.h index 79799cec55f..8c92a8f3a6e 100644 --- a/src/server/game/Globals/ObjectAccessor.h +++ b/src/server/game/Globals/ObjectAccessor.h @@ -94,8 +94,8 @@ class ObjectAccessor static ObjectAccessor* instance() { - static ObjectAccessor *instance = new ObjectAccessor(); - return instance; + static ObjectAccessor instance; + return &instance; } template<class T> static T* GetObjectInOrOutOfWorld(uint64 guid, T* /*typeSpecifier*/) diff --git a/src/server/game/Globals/ObjectMgr.h b/src/server/game/Globals/ObjectMgr.h index 1a7fd311ba0..738b99778f8 100644 --- a/src/server/game/Globals/ObjectMgr.h +++ b/src/server/game/Globals/ObjectMgr.h @@ -694,8 +694,8 @@ class ObjectMgr public: static ObjectMgr* instance() { - static ObjectMgr* instance = new ObjectMgr(); - return instance; + static ObjectMgr instance; + return &instance; } typedef std::unordered_map<uint32, Item*> ItemMap; diff --git a/src/server/game/Groups/GroupMgr.h b/src/server/game/Groups/GroupMgr.h index 4bf440c881e..556df1bc351 100644 --- a/src/server/game/Groups/GroupMgr.h +++ b/src/server/game/Groups/GroupMgr.h @@ -29,8 +29,8 @@ private: public: static GroupMgr* instance() { - static GroupMgr* instance = new GroupMgr(); - return instance; + static GroupMgr instance; + return &instance; } typedef std::map<uint32, Group*> GroupContainer; diff --git a/src/server/game/Guilds/GuildMgr.h b/src/server/game/Guilds/GuildMgr.h index 032a8864e3e..4aa418b7e73 100644 --- a/src/server/game/Guilds/GuildMgr.h +++ b/src/server/game/Guilds/GuildMgr.h @@ -29,8 +29,8 @@ private: public: static GuildMgr* instance() { - static GuildMgr* instance = new GuildMgr(); - return instance; + static GuildMgr instance; + return &instance; } Guild* GetGuildByLeader(uint64 guid) const; diff --git a/src/server/game/Handlers/AddonHandler.h b/src/server/game/Handlers/AddonHandler.h index 31bbfa01900..c60f2942efd 100644 --- a/src/server/game/Handlers/AddonHandler.h +++ b/src/server/game/Handlers/AddonHandler.h @@ -28,8 +28,8 @@ class AddonHandler public: static AddonHandler* instance() { - static AddonHandler* instance = new AddonHandler(); - return instance; + static AddonHandler instance; + return &instance; } bool BuildAddonPacket(WorldPacket* Source, WorldPacket* Target); diff --git a/src/server/game/Instances/InstanceSaveMgr.h b/src/server/game/Instances/InstanceSaveMgr.h index 98b37386a3f..52e6a847211 100644 --- a/src/server/game/Instances/InstanceSaveMgr.h +++ b/src/server/game/Instances/InstanceSaveMgr.h @@ -160,8 +160,8 @@ class InstanceSaveManager static InstanceSaveManager* instance() { - static InstanceSaveManager *instance = new InstanceSaveManager(); - return instance; + static InstanceSaveManager instance; + return &instance; } /* resetTime is a global propery of each (raid/heroic) map diff --git a/src/server/game/Maps/MapManager.h b/src/server/game/Maps/MapManager.h index 990d5e80c1a..e028833d72d 100644 --- a/src/server/game/Maps/MapManager.h +++ b/src/server/game/Maps/MapManager.h @@ -32,8 +32,8 @@ class MapManager public: static MapManager* instance() { - static MapManager* instance = new MapManager(); - return instance; + static MapManager instance; + return &instance; } Map* CreateBaseMap(uint32 mapId); diff --git a/src/server/game/Maps/TransportMgr.h b/src/server/game/Maps/TransportMgr.h index 6ebc6316710..04c372cc526 100644 --- a/src/server/game/Maps/TransportMgr.h +++ b/src/server/game/Maps/TransportMgr.h @@ -100,8 +100,8 @@ class TransportMgr public: static TransportMgr* instance() { - static TransportMgr* instance = new TransportMgr(); - return instance; + static TransportMgr instance; + return &instance; } void Unload(); diff --git a/src/server/game/Movement/Waypoints/WaypointManager.h b/src/server/game/Movement/Waypoints/WaypointManager.h index b12396293aa..385f4809729 100644 --- a/src/server/game/Movement/Waypoints/WaypointManager.h +++ b/src/server/game/Movement/Waypoints/WaypointManager.h @@ -39,8 +39,8 @@ class WaypointMgr public: static WaypointMgr* instance() { - static WaypointMgr* instance = new WaypointMgr(); - return instance; + static WaypointMgr instance; + return &instance; } // Attempts to reload a single path from database diff --git a/src/server/game/OutdoorPvP/OutdoorPvPMgr.h b/src/server/game/OutdoorPvP/OutdoorPvPMgr.h index ab1908e273d..1a9db2b682e 100644 --- a/src/server/game/OutdoorPvP/OutdoorPvPMgr.h +++ b/src/server/game/OutdoorPvP/OutdoorPvPMgr.h @@ -44,8 +44,8 @@ class OutdoorPvPMgr public: static OutdoorPvPMgr* instance() { - static OutdoorPvPMgr* instance = new OutdoorPvPMgr(); - return instance; + static OutdoorPvPMgr instance; + return &instance; } // create outdoor pvp events diff --git a/src/server/game/Pools/PoolMgr.h b/src/server/game/Pools/PoolMgr.h index 0a3f52b55f6..d1fcadd40de 100644 --- a/src/server/game/Pools/PoolMgr.h +++ b/src/server/game/Pools/PoolMgr.h @@ -110,8 +110,8 @@ class PoolMgr public: static PoolMgr* instance() { - static PoolMgr* instance = new PoolMgr(); - return instance; + static PoolMgr instance; + return &instance; } void LoadFromDB(); diff --git a/src/server/game/Scripting/ScriptMgr.h b/src/server/game/Scripting/ScriptMgr.h index 260c43f9b3b..325a0743d79 100644 --- a/src/server/game/Scripting/ScriptMgr.h +++ b/src/server/game/Scripting/ScriptMgr.h @@ -881,8 +881,8 @@ class ScriptMgr public: /* Initialization */ static ScriptMgr* instance() { - static ScriptMgr* instance = new ScriptMgr(); - return instance; + static ScriptMgr instance; + return &instance; } void Initialize(); diff --git a/src/server/game/Scripting/ScriptSystem.h b/src/server/game/Scripting/ScriptSystem.h index 636343838c1..74c51e5b136 100644 --- a/src/server/game/Scripting/ScriptSystem.h +++ b/src/server/game/Scripting/ScriptSystem.h @@ -54,8 +54,8 @@ class SystemMgr public: static SystemMgr* instance() { - static SystemMgr* instance = new SystemMgr(); - return instance; + static SystemMgr instance; + return &instance; } typedef std::unordered_map<uint32, ScriptPointVector> PointMoveMap; diff --git a/src/server/game/Server/Protocol/PacketLog.h b/src/server/game/Server/Protocol/PacketLog.h index 71d87bf45ae..4f298fa3c50 100644 --- a/src/server/game/Server/Protocol/PacketLog.h +++ b/src/server/game/Server/Protocol/PacketLog.h @@ -37,8 +37,8 @@ class PacketLog public: static PacketLog* instance() { - static PacketLog* instance = new PacketLog(); - return instance; + static PacketLog instance; + return &instance; } void Initialize(); diff --git a/src/server/game/Spells/SpellMgr.h b/src/server/game/Spells/SpellMgr.h index 53b4cef73e8..448ddb9860b 100644 --- a/src/server/game/Spells/SpellMgr.h +++ b/src/server/game/Spells/SpellMgr.h @@ -610,9 +610,8 @@ class SpellMgr public: static SpellMgr* instance() { - static SpellMgr* instance = new SpellMgr(); - - return instance; + static SpellMgr instance; + return &instance; } // Spell correctness for client using diff --git a/src/server/game/Texts/CreatureTextMgr.h b/src/server/game/Texts/CreatureTextMgr.h index f8c499f7ce6..18dc7683b8d 100644 --- a/src/server/game/Texts/CreatureTextMgr.h +++ b/src/server/game/Texts/CreatureTextMgr.h @@ -89,8 +89,8 @@ class CreatureTextMgr public: static CreatureTextMgr* instance() { - static CreatureTextMgr* instance = new CreatureTextMgr(); - return instance; + static CreatureTextMgr instance; + return &instance; } void LoadCreatureTexts(); diff --git a/src/server/game/Tickets/TicketMgr.h b/src/server/game/Tickets/TicketMgr.h index 00b4e228fab..5ad44365e7f 100644 --- a/src/server/game/Tickets/TicketMgr.h +++ b/src/server/game/Tickets/TicketMgr.h @@ -180,8 +180,8 @@ private: public: static TicketMgr* instance() { - static TicketMgr* instance = new TicketMgr(); - return instance; + static TicketMgr instance; + return &instance; } void LoadTickets(); diff --git a/src/server/game/Warden/WardenCheckMgr.h b/src/server/game/Warden/WardenCheckMgr.h index c9e26283060..4a56c1fc849 100644 --- a/src/server/game/Warden/WardenCheckMgr.h +++ b/src/server/game/Warden/WardenCheckMgr.h @@ -57,8 +57,8 @@ class WardenCheckMgr public: static WardenCheckMgr* instance() { - static WardenCheckMgr* instance = new WardenCheckMgr(); - return instance; + static WardenCheckMgr instance; + return &instance; } // We have a linear key without any gaps, so we use vector for fast access diff --git a/src/server/game/World/World.h b/src/server/game/World/World.h index 22dece5d4f0..7d3c7694463 100644 --- a/src/server/game/World/World.h +++ b/src/server/game/World/World.h @@ -520,8 +520,8 @@ class World public: static World* instance() { - static World* instance = new World(); - return instance; + static World instance; + return &instance; } static std::atomic<uint32> m_worldLoopCounter; diff --git a/src/server/shared/Configuration/Config.h b/src/server/shared/Configuration/Config.h index 68daca5440f..42c3a700f3f 100644 --- a/src/server/shared/Configuration/Config.h +++ b/src/server/shared/Configuration/Config.h @@ -35,8 +35,8 @@ public: static ConfigMgr* instance() { - static ConfigMgr *instance = new ConfigMgr(); - return instance; + static ConfigMgr instance; + return &instance; } bool Reload(); diff --git a/src/server/shared/Dynamic/ObjectRegistry.h b/src/server/shared/Dynamic/ObjectRegistry.h index e9e57415073..fe55982f15f 100644 --- a/src/server/shared/Dynamic/ObjectRegistry.h +++ b/src/server/shared/Dynamic/ObjectRegistry.h @@ -35,8 +35,8 @@ class ObjectRegistry static ObjectRegistry<T, Key>* instance() { - static ObjectRegistry<T, Key>* instance = new ObjectRegistry<T, Key>(); - return instance; + static ObjectRegistry<T, Key> instance; + return &instance; } /// Returns a registry item diff --git a/src/server/shared/Logging/Log.h b/src/server/shared/Logging/Log.h index e739c9eaf4e..8ae8db5bf5f 100644 --- a/src/server/shared/Logging/Log.h +++ b/src/server/shared/Logging/Log.h @@ -43,15 +43,15 @@ class Log static Log* instance(boost::asio::io_service* ioService = nullptr) { - static Log* instance = new Log(); + static Log instance; if (ioService != nullptr) { - instance->_ioService = ioService; - instance->_strand = new boost::asio::strand(*ioService); + instance._ioService = ioService; + instance._strand = new boost::asio::strand(*ioService); } - return instance; + return &instance; } void LoadFromConfig(); |