diff options
author | brain <brain@e03df62e-2008-0410-955e-edbf42e46eb7> | 2006-12-30 16:02:56 +0000 |
---|---|---|
committer | brain <brain@e03df62e-2008-0410-955e-edbf42e46eb7> | 2006-12-30 16:02:56 +0000 |
commit | e5facb2cd00fca595d4b37c4de8ad0938d9eac25 (patch) | |
tree | 3649d96bf82dc8d1e075069662e6a71ab9764073 /src | |
parent | 6fff3c54be91dbbfe5e3ffca4204ad0378d70b7d (diff) |
Tweaks to instantiate less stuff when writing to a bunch of users
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@6172 e03df62e-2008-0410-955e-edbf42e46eb7
Diffstat (limited to 'src')
-rw-r--r-- | src/channels.cpp | 6 | ||||
-rw-r--r-- | src/users.cpp | 19 |
2 files changed, 17 insertions, 8 deletions
diff --git a/src/channels.cpp b/src/channels.cpp index df1f77976..36436cdc5 100644 --- a/src/channels.cpp +++ b/src/channels.cpp @@ -618,11 +618,12 @@ void chanrec::WriteChannel(userrec* user, const std::string &text) return; snprintf(tb,MAXBUF,":%s %s",user->GetFullHost(),text.c_str()); + std::string out = tb; for (CUList::iterator i = ulist->begin(); i != ulist->end(); i++) { if (IS_LOCAL(i->second)) - i->second->Write(std::string(tb)); + i->second->Write(out); } } @@ -706,6 +707,7 @@ void chanrec::WriteAllExcept(userrec* user, bool serversource, char status, CULi } snprintf(tb,MAXBUF,":%s %s",user->GetFullHost(),text.c_str()); + std::string out = tb; for (CUList::iterator i = ulist->begin(); i != ulist->end(); i++) { @@ -714,7 +716,7 @@ void chanrec::WriteAllExcept(userrec* user, bool serversource, char status, CULi if (serversource) i->second->WriteServ(text); else - i->second->Write(std::string(tb)); + i->second->Write(out); } } } diff --git a/src/users.cpp b/src/users.cpp index e3c432caf..070b8f9cc 100644 --- a/src/users.cpp +++ b/src/users.cpp @@ -1569,6 +1569,7 @@ void userrec::WriteCommon(const std::string &text) /* We dont want to be doing this n times, just once */ snprintf(tb,MAXBUF,":%s %s",this->GetFullHost(),text.c_str()); + std::string out = tb; for (UCListIter v = this->chans.begin(); v != this->chans.end(); v++) { @@ -1578,7 +1579,7 @@ void userrec::WriteCommon(const std::string &text) if ((IS_LOCAL(i->second)) && (already_sent[i->second->fd] != uniq_id)) { already_sent[i->second->fd] = uniq_id; - i->second->Write(std::string(tb)); + i->second->Write(out); sent_to_at_least_one = true; } } @@ -1624,6 +1625,8 @@ void userrec::WriteCommonExcept(const std::string &text) char textbuffer[MAXBUF]; char tb1[MAXBUF]; char tb2[MAXBUF]; + std::string out1; + std::string out2; strlcpy(textbuffer, text.c_str(), MAXBUF); @@ -1657,6 +1660,7 @@ void userrec::WriteCommonExcept(const std::string &text) strlcpy(check,"*.net *.split",MAXQUIT); quit_munge = true; snprintf(tb2,MAXBUF,":%s %s",this->GetFullHost(),oper_quit); + out2 = tb2; } } } @@ -1671,9 +1675,12 @@ void userrec::WriteCommonExcept(const std::string &text) *check = 0; // We don't need to strlcpy, we just chop it from the : quit_munge = true; snprintf(tb2,MAXBUF,":%s %s",this->GetFullHost(),oper_quit); + out2 = tb2; } } + out1 = tb1; + for (UCListIter v = this->chans.begin(); v != this->chans.end(); v++) { CUList *ulist = v->first->GetUsers(); @@ -1685,9 +1692,9 @@ void userrec::WriteCommonExcept(const std::string &text) { already_sent[i->second->fd] = uniq_id; if (quit_munge) - i->second->Write(*i->second->oper ? std::string(tb2) : std::string(tb1)); + i->second->Write(*i->second->oper ? out2 : out1); else - i->second->Write(std::string(tb1)); + i->second->Write(out1); } } } @@ -1849,12 +1856,12 @@ void userrec::NoticeAll(char* text, ...) vsnprintf(textbuffer, MAXBUF, text, argsPtr); va_end(argsPtr); - snprintf(formatbuffer,MAXBUF,"NOTICE $* :%s",textbuffer); + snprintf(formatbuffer,MAXBUF,":%s NOTICE $* :%s", this->GetFullHost(), textbuffer); + std::string fmt = formatbuffer; for (std::vector<userrec*>::const_iterator i = ServerInstance->local_users.begin(); i != ServerInstance->local_users.end(); i++) { - userrec* t = *i; - t->WriteFrom(this, std::string(formatbuffer)); + (*i)->Write(fmt); } } |