aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Chat
diff options
context:
space:
mode:
authorSpp <spp@jorge.gr>2012-10-24 13:29:34 +0200
committerSpp <spp@jorge.gr>2012-10-24 15:34:48 +0200
commit013fb1f4d9131fc8ec45931445e6a05408dce8f9 (patch)
treedcdc34368a9a53d27826895b91683b7b7358c476 /src/server/game/Chat
parentca85c3b4759c111fa8dd277a037aab7a0968dbaf (diff)
Core/Misc: reduced amount of string memory allocations (Step I)
Diffstat (limited to 'src/server/game/Chat')
-rwxr-xr-xsrc/server/game/Chat/Channels/Channel.cpp11
-rwxr-xr-xsrc/server/game/Chat/Channels/Channel.h2
-rwxr-xr-xsrc/server/game/Chat/Channels/ChannelMgr.cpp34
-rwxr-xr-xsrc/server/game/Chat/Channels/ChannelMgr.h24
-rwxr-xr-xsrc/server/game/Chat/Chat.cpp18
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());
}