diff options
| author | Spp <spp@jorge.gr> | 2012-10-24 13:29:34 +0200 |
|---|---|---|
| committer | Spp <spp@jorge.gr> | 2012-10-24 15:34:48 +0200 |
| commit | 013fb1f4d9131fc8ec45931445e6a05408dce8f9 (patch) | |
| tree | dcdc34368a9a53d27826895b91683b7b7358c476 /src/server/game/Chat | |
| parent | ca85c3b4759c111fa8dd277a037aab7a0968dbaf (diff) | |
Core/Misc: reduced amount of string memory allocations (Step I)
Diffstat (limited to 'src/server/game/Chat')
| -rwxr-xr-x | src/server/game/Chat/Channels/Channel.cpp | 11 | ||||
| -rwxr-xr-x | src/server/game/Chat/Channels/Channel.h | 2 | ||||
| -rwxr-xr-x | src/server/game/Chat/Channels/ChannelMgr.cpp | 34 | ||||
| -rwxr-xr-x | src/server/game/Chat/Channels/ChannelMgr.h | 24 | ||||
| -rwxr-xr-x | src/server/game/Chat/Chat.cpp | 18 |
5 files changed, 48 insertions, 41 deletions
diff --git a/src/server/game/Chat/Channels/Channel.cpp b/src/server/game/Chat/Channels/Channel.cpp index 579f322594a..66f964fb4cf 100755 --- a/src/server/game/Chat/Channels/Channel.cpp +++ b/src/server/game/Chat/Channels/Channel.cpp @@ -24,8 +24,9 @@ #include "DatabaseEnv.h" #include "AccountMgr.h" -Channel::Channel(const std::string& name, uint32 channel_id, uint32 Team) - : m_announce(true), m_ownership(true), m_name(name), m_password(""), m_flags(0), m_channelId(channel_id), m_ownerGUID(0), m_Team(Team) +Channel::Channel(const std::string& name, uint32 channel_id, uint32 Team) : m_announce(true), + m_ownership(true), m_name(name), m_password(""), m_flags(0), m_channelId(channel_id), + m_ownerGUID(0), m_Team(Team) { m_IsSaved = false; // set special flags if built-in channel @@ -70,10 +71,9 @@ Channel::Channel(const std::string& name, uint32 channel_id, uint32 Team) if (db_BannedList) { Tokenizer tokens(db_BannedList, ' '); - Tokenizer::const_iterator iter; - for (iter = tokens.begin(); iter != tokens.end(); ++iter) + for (Tokenizer::const_iterator i = tokens.begin(); i != tokens.end(); ++i) { - uint64 banned_guid = atol(*iter); + uint64 banned_guid = atol(*i); if (banned_guid) { sLog->outDebug(LOG_FILTER_CHATSYS, "Channel(%s) loaded banned guid:" UI64FMTD "", name.c_str(), banned_guid); @@ -118,7 +118,6 @@ void Channel::UpdateChannelInDB() const sLog->outDebug(LOG_FILTER_CHATSYS, "Channel(%s) updated in database", m_name.c_str()); } - } void Channel::UpdateChannelUseageInDB() const diff --git a/src/server/game/Chat/Channels/Channel.h b/src/server/game/Chat/Channels/Channel.h index 04bb4ae2916..6794a4ea93b 100755 --- a/src/server/game/Chat/Channels/Channel.h +++ b/src/server/game/Chat/Channels/Channel.h @@ -246,7 +246,7 @@ class Channel public: uint32 m_Team; Channel(const std::string& name, uint32 channel_id, uint32 Team = 0); - std::string GetName() const { return m_name; } + std::string const& GetName() const { return m_name; } uint32 GetChannelId() const { return m_channelId; } bool IsConstant() const { return m_channelId != 0; } bool IsAnnounce() const { return m_announce; } diff --git a/src/server/game/Chat/Channels/ChannelMgr.cpp b/src/server/game/Chat/Channels/ChannelMgr.cpp index 75436e1eb5f..78b71744e0e 100755 --- a/src/server/game/Chat/Channels/ChannelMgr.cpp +++ b/src/server/game/Chat/Channels/ChannelMgr.cpp @@ -20,7 +20,15 @@ #include "World.h" -ChannelMgr* channelMgr(uint32 team) +ChannelMgr::~ChannelMgr() +{ + for (ChannelMap::iterator itr = channels.begin(); itr != channels.end(); ++itr) + delete itr->second; + + channels.clear(); +} + +ChannelMgr* ChannelMgr::forTeam(uint32 team) { if (sWorld->getBoolConfig(CONFIG_ALLOW_TWO_SIDE_INTERACTION_CHANNEL)) return ACE_Singleton<AllianceChannelMgr, ACE_Null_Mutex>::instance(); // cross-faction @@ -33,31 +41,25 @@ ChannelMgr* channelMgr(uint32 team) return NULL; } -ChannelMgr::~ChannelMgr() -{ - for (ChannelMap::iterator itr = channels.begin(); itr != channels.end(); ++itr) - delete itr->second; - - channels.clear(); -} - -Channel* ChannelMgr::GetJoinChannel(std::string name, uint32 channel_id) +Channel* ChannelMgr::GetJoinChannel(std::string const& name, uint32 channel_id) { std::wstring wname; Utf8toWStr(name, wname); wstrToLower(wname); - if (channels.find(wname) == channels.end()) + ChannelMap::const_iterator i = channels.find(wname); + + if (i == channels.end()) { Channel* nchan = new Channel(name, channel_id, team); channels[wname] = nchan; return nchan; } - return channels[wname]; + return i->second; } -Channel* ChannelMgr::GetChannel(std::string name, Player* p, bool pkt) +Channel* ChannelMgr::GetChannel(std::string const& name, Player* player, bool pkt) { std::wstring wname; Utf8toWStr(name, wname); @@ -71,7 +73,7 @@ Channel* ChannelMgr::GetChannel(std::string name, Player* p, bool pkt) { WorldPacket data; MakeNotOnPacket(&data, name); - p->GetSession()->SendPacket(&data); + player->GetSession()->SendPacket(&data); } return NULL; @@ -80,7 +82,7 @@ Channel* ChannelMgr::GetChannel(std::string name, Player* p, bool pkt) return i->second; } -void ChannelMgr::LeftChannel(std::string name) +void ChannelMgr::LeftChannel(std::string const& name) { std::wstring wname; Utf8toWStr(name, wname); @@ -100,7 +102,7 @@ void ChannelMgr::LeftChannel(std::string name) } } -void ChannelMgr::MakeNotOnPacket(WorldPacket* data, std::string name) +void ChannelMgr::MakeNotOnPacket(WorldPacket* data, std::string const& name) { data->Initialize(SMSG_CHANNEL_NOTIFY, (1+10)); // we guess size (*data) << (uint8)0x05 << name; diff --git a/src/server/game/Chat/Channels/ChannelMgr.h b/src/server/game/Chat/Channels/ChannelMgr.h index 887e53f49a5..c1d1793c446 100755 --- a/src/server/game/Chat/Channels/ChannelMgr.h +++ b/src/server/game/Chat/Channels/ChannelMgr.h @@ -29,23 +29,29 @@ class ChannelMgr { + typedef std::map<std::wstring, Channel*> ChannelMap; + public: - uint32 team; - typedef std::map<std::wstring, Channel*> ChannelMap; - ChannelMgr() {team = 0;} + ChannelMgr() : team(0) + { } + ~ChannelMgr(); - Channel* GetJoinChannel(std::string name, uint32 channel_id); - Channel* GetChannel(std::string name, Player* p, bool pkt = true); - void LeftChannel(std::string name); + static ChannelMgr * forTeam(uint32 team); + void setTeam(uint32 newTeam) { team = newTeam; } + + Channel* GetJoinChannel(std::string const& name, uint32 channel_id); + Channel* GetChannel(std::string const& name, Player* p, bool pkt = true); + void LeftChannel(std::string const& name); + private: ChannelMap channels; - void MakeNotOnPacket(WorldPacket* data, std::string name); + uint32 team; + + void MakeNotOnPacket(WorldPacket* data, std::string const& name); }; class AllianceChannelMgr : public ChannelMgr {}; class HordeChannelMgr : public ChannelMgr {}; -ChannelMgr* channelMgr(uint32 team); - #endif diff --git a/src/server/game/Chat/Chat.cpp b/src/server/game/Chat/Chat.cpp index b5bad419c98..88c3de274fb 100755 --- a/src/server/game/Chat/Chat.cpp +++ b/src/server/game/Chat/Chat.cpp @@ -350,8 +350,8 @@ bool ChatHandler::ExecuteCommandInTable(ChatCommand* table, const char* text, co Player* p = m_session->GetPlayer(); uint64 sel_guid = p->GetSelection(); sLog->outCommand(m_session->GetAccountId(), "Command: %s [Player: %s (Account: %u) X: %f Y: %f Z: %f Map: %u Selected %s: %s (GUID: %u)]", - fullcmd.c_str(), p->GetName(), m_session->GetAccountId(), p->GetPositionX(), p->GetPositionY(), p->GetPositionZ(), p->GetMapId(), - GetLogNameForGuid(sel_guid), (p->GetSelectedUnit()) ? p->GetSelectedUnit()->GetName() : "", GUID_LOPART(sel_guid)); + fullcmd.c_str(), p->GetName().c_str(), m_session->GetAccountId(), p->GetPositionX(), p->GetPositionY(), p->GetPositionZ(), p->GetMapId(), + GetLogNameForGuid(sel_guid), (p->GetSelectedUnit()) ? p->GetSelectedUnit()->GetName().c_str() : "", GUID_LOPART(sel_guid)); } } } @@ -370,7 +370,7 @@ bool ChatHandler::ExecuteCommandInTable(ChatCommand* table, const char* text, co return false; } -bool ChatHandler::SetDataForCommandInTable(ChatCommand* table, const char* text, uint32 security, std::string const& help, std::string const& fullcommand) +bool ChatHandler::SetDataForCommandInTable(ChatCommand* table, char const* text, uint32 security, std::string const& help, std::string const& fullcommand) { std::string cmd = ""; @@ -425,7 +425,7 @@ bool ChatHandler::SetDataForCommandInTable(ChatCommand* table, const char* text, return false; } -int ChatHandler::ParseCommands(const char* text) +int ChatHandler::ParseCommands(char const* text) { ASSERT(text); ASSERT(*text); @@ -465,7 +465,7 @@ int ChatHandler::ParseCommands(const char* text) return 1; } -bool ChatHandler::isValidChatMessage(const char* message) +bool ChatHandler::isValidChatMessage(char const* message) { /* Valid examples: @@ -663,7 +663,7 @@ void ChatHandler::FillMessageData(WorldPacket* data, WorldSession* session, uint { *data << uint64(speaker->GetGUID()); *data << uint32(0); // 2.1.0 - *data << uint32(strlen(speaker->GetName()) + 1); + *data << uint32(speaker->GetName().size() + 1); *data << speaker->GetName(); uint64 listener_guid = 0; *data << uint64(listener_guid); @@ -1020,7 +1020,7 @@ uint64 ChatHandler::extractGuidFromLink(char* text) if (!normalizePlayerName(name)) return 0; - if (Player* player = sObjectAccessor->FindPlayerByName(name.c_str())) + if (Player* player = sObjectAccessor->FindPlayerByName(name)) return player->GetGUID(); if (uint64 guid = sObjectMgr->GetPlayerGUIDByName(name)) @@ -1078,7 +1078,7 @@ bool ChatHandler::extractPlayerTarget(char* args, Player** player, uint64* playe return false; } - Player* pl = sObjectAccessor->FindPlayerByName(name.c_str()); + Player* pl = sObjectAccessor->FindPlayerByName(name); // if allowed player pointer if (player) @@ -1213,7 +1213,7 @@ bool ChatHandler::GetPlayerGroupAndGUIDByName(const char* cname, Player* &player return false; } - player = sObjectAccessor->FindPlayerByName(name.c_str()); + player = sObjectAccessor->FindPlayerByName(name); if (offline) guid = sObjectMgr->GetPlayerGUIDByName(name.c_str()); } |
