summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbrain <brain@e03df62e-2008-0410-955e-edbf42e46eb7>2006-12-14 16:57:52 +0000
committerbrain <brain@e03df62e-2008-0410-955e-edbf42e46eb7>2006-12-14 16:57:52 +0000
commit4eb254df411f8dd1694f1b3781c77f702538c59f (patch)
treef09afffe3c05f97a2cc38d8e141c0bf9aca1822d
parent06149e3f2b56258e76e9c5d5e7f5997a05bdd7f0 (diff)
Refactoring:
1) Chain together a resize and an append, to improve the buffer read efficiency 2) eliminate a const char* pointer by doing it purely with string, saving a data copy 3) use iterators rather than ints and vector::size() for spooling motd and rules files to users 4) change a usage of !length() to empty() to make it more readable git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@5985 e03df62e-2008-0410-955e-edbf42e46eb7
-rw-r--r--src/users.cpp27
1 files changed, 9 insertions, 18 deletions
diff --git a/src/users.cpp b/src/users.cpp
index 6dab25495..3a20444e5 100644
--- a/src/users.cpp
+++ b/src/users.cpp
@@ -653,16 +653,9 @@ void userrec::AddWriteBuf(const std::string &data)
try
{
if (data.length() > 512)
- {
- std::string newdata(data);
- newdata.resize(510);
- newdata.append("\r\n");
- sendq.append(newdata);
- }
+ sendq.append(data.substr(0,510)).append("\r\n");
else
- {
sendq.append(data);
- }
}
catch (...)
{
@@ -683,8 +676,7 @@ void userrec::FlushWriteBuf()
if ((sendq.length()) && (this->fd != FD_MAGIC_NUMBER))
{
int old_sendq_length = sendq.length();
- const char* tb = this->sendq.c_str();
- int n_sent = write(this->fd,tb,this->sendq.length());
+ int n_sent = write(this->fd, this->sendq.data(), this->sendq.length());
if (n_sent == -1)
{
if (errno == EAGAIN)
@@ -700,10 +692,9 @@ void userrec::FlushWriteBuf()
}
else
{
- /*ServerInstance->Log(DEBUG,"Wrote: %d of %d: %s", n_sent, old_sendq_length, sendq.substr(0, n_sent).c_str());*/
// advance the queue
- tb += n_sent;
- this->sendq = tb;
+ if (n_sent)
+ this->sendq = this->sendq.substr(n_sent);
// update the user's stats counters
this->bytes_out += n_sent;
this->cmds_out++;
@@ -728,7 +719,7 @@ void userrec::SetWriteError(const std::string &error)
{
ServerInstance->Log(DEBUG,"SetWriteError: %s",error.c_str());
// don't try to set the error twice, its already set take the first string.
- if (!this->WriteError.length())
+ if (this->WriteError.empty())
{
ServerInstance->Log(DEBUG,"Setting error string for %s to '%s'",this->nick,error.c_str());
this->WriteError = error;
@@ -2056,8 +2047,8 @@ void userrec::ShowMOTD()
}
this->WriteServ("375 %s :%s message of the day", this->nick, ServerInstance->Config->ServerName);
- for (unsigned int i = 0; i < ServerInstance->Config->MOTD.size(); i++)
- this->WriteServ("372 %s :- %s",this->nick,ServerInstance->Config->MOTD[i].c_str());
+ for (file_cache::iterator i = ServerInstance->Config->MOTD.begin(); i != ServerInstance->Config->MOTD.end(); i++)
+ this->WriteServ("372 %s :- %s",this->nick,i->c_str());
this->WriteServ("376 %s :End of message of the day.", this->nick);
}
@@ -2071,8 +2062,8 @@ void userrec::ShowRULES()
}
this->WriteServ("NOTICE %s :%s rules",this->nick,ServerInstance->Config->ServerName);
- for (unsigned int i = 0; i < ServerInstance->Config->RULES.size(); i++)
- this->WriteServ("NOTICE %s :%s",this->nick,ServerInstance->Config->RULES[i].c_str());
+ for (file_cache::iterator i = ServerInstance->Config->RULES.begin(); i != ServerInstance->Config->RULES.end(); i++)
+ this->WriteServ("NOTICE %s :%s",this->nick,i->c_str());
this->WriteServ("NOTICE %s :End of %s rules.",this->nick,ServerInstance->Config->ServerName);
}