diff options
-rw-r--r-- | include/commands/cmd_whowas.h | 10 | ||||
-rw-r--r-- | src/coremods/core_whowas.cpp | 45 |
2 files changed, 27 insertions, 28 deletions
diff --git a/include/commands/cmd_whowas.h b/include/commands/cmd_whowas.h index 8e1a8059d..798c48ee5 100644 --- a/include/commands/cmd_whowas.h +++ b/include/commands/cmd_whowas.h @@ -26,19 +26,19 @@ /* Forward ref for typedefs */ class WhoWasGroup; -/** A group of users related by nickname - */ -typedef std::deque<WhoWasGroup*> whowas_set; - namespace WhoWas { /** Everything known about one nick */ struct Nick : public intrusive_list_node<Nick> { + /** A group of users related by nickname + */ + typedef std::deque<WhoWasGroup*> List; + /** Container where each element has information about one occurrence of this nick */ - whowas_set entries; + List entries; /** Time this nick was added to the database */ diff --git a/src/coremods/core_whowas.cpp b/src/coremods/core_whowas.cpp index 6c16ca1a3..71fa6d738 100644 --- a/src/coremods/core_whowas.cpp +++ b/src/coremods/core_whowas.cpp @@ -40,21 +40,20 @@ CmdResult CommandWhowas::Handle (const std::vector<std::string>& parameters, Use return CMD_FAILURE; } - whowas_users::iterator i = whowas.find(parameters[0]); - - if (i == whowas.end()) + whowas_users::const_iterator it = whowas.find(parameters[0]); + if (it == whowas.end()) { user->WriteNumeric(ERR_WASNOSUCHNICK, "%s :There was no such nickname", parameters[0].c_str()); } else { - WhoWas::Nick* nick = i->second; - whowas_set* grp = &nick->entries; - if (!grp->empty()) + const WhoWas::Nick& nick = *it->second; + const WhoWas::Nick::List& list = nick.entries; + if (!list.empty()) { - for (whowas_set::iterator ux = grp->begin(); ux != grp->end(); ux++) + for (WhoWas::Nick::List::const_iterator i = list.begin(); i != list.end(); ++i) { - WhoWasGroup* u = *ux; + WhoWasGroup* u = *i; user->WriteNumeric(RPL_WHOWASUSER, "%s %s %s * :%s", parameters[0].c_str(), u->ident.c_str(),u->dhost.c_str(),u->gecos.c_str()); @@ -83,8 +82,8 @@ std::string CommandWhowas::GetStats() int whowas_size = 0; for (whowas_users::iterator i = whowas.begin(); i != whowas.end(); ++i) { - whowas_set* n = &i->second->entries; - whowas_size += n->size(); + WhoWas::Nick::List& list = i->second->entries; + whowas_size += list.size(); } return "Whowas entries: " + ConvToStr(whowas_size); } @@ -123,14 +122,14 @@ void CommandWhowas::AddToWhoWas(User* user) else { // We've met this nick before, add a new record to the list - whowas_set* set = &ret.first->second->entries; - set->push_back(new WhoWasGroup(user)); + WhoWas::Nick::List& list = ret.first->second->entries; + list.push_back(new WhoWasGroup(user)); // If there are too many records for this nick, remove the oldest (front) - if (set->size() > this->GroupSize) + if (list.size() > this->GroupSize) { - delete set->front(); - set->pop_front(); + delete list.front(); + list.pop_front(); } } } @@ -164,11 +163,11 @@ void CommandWhowas::Prune() /* Then cut the whowas sets to new size (groupsize) */ for (whowas_users::iterator i = whowas.begin(); i != whowas.end(); ++i) { - whowas_set* n = &i->second->entries; - while (n->size() > this->GroupSize) + WhoWas::Nick::List& list = i->second->entries; + while (list.size() > this->GroupSize) { - delete n->front(); - n->pop_front(); + delete list.front(); + list.pop_front(); } } } @@ -179,11 +178,11 @@ void CommandWhowas::Maintain() time_t min = ServerInstance->Time() - this->MaxKeep; for (whowas_users::iterator i = whowas.begin(); i != whowas.end(); ++i) { - whowas_set* set = &i->second->entries; - while (!set->empty() && set->front()->signon < min) + WhoWas::Nick::List& list = i->second->entries; + while (!list.empty() && list.front()->signon < min) { - delete set->front(); - set->pop_front(); + delete list.front(); + list.pop_front(); } } } |