From 1e5728d84c1b4b0d86bf745ce253aa458575df20 Mon Sep 17 00:00:00 2001 From: w00t Date: Thu, 17 Jan 2008 12:17:09 +0000 Subject: [PATCH] Move a number of methods from class InspIRCd to class UserManager git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@8726 e03df62e-2008-0410-955e-edbf42e46eb7 --- include/inspircd.h | 25 ------------------- include/usermanager.h | 22 ++++++++++++++++- src/commands/cmd_lusers.cpp | 14 +++++------ src/helperfuncs.cpp | 31 ----------------------- src/modules/m_spanningtree/main.cpp | 18 +++++++------- src/usermanager.cpp | 38 +++++++++++++++++++++++++++++ 6 files changed, 75 insertions(+), 73 deletions(-) diff --git a/include/inspircd.h b/include/inspircd.h index 320aa83ca..c8acf4240 100644 --- a/include/inspircd.h +++ b/include/inspircd.h @@ -651,36 +651,11 @@ class CoreExport InspIRCd : public classbase */ static void QuickExit(int status); - /** Return a count of users, unknown and known connections - * @return The number of users - */ - int UserCount(); - - /** Return a count of fully registered connections only - * @return The number of registered users - */ - int RegisteredUserCount(); - - /** Return a count of opered (umode +o) users only - * @return The number of opers - */ - int OperCount(); - - /** Return a count of unregistered (before NICK/USER) users only - * @return The number of unregistered (unknown) connections - */ - int UnregisteredUserCount(); - /** Return a count of channels on the network * @return The number of channels */ long ChannelCount(); - /** Return a count of local users on this server only - * @return The number of local users - */ - long LocalUserCount(); - /** Send an error notice to all local users, opered and unopered * @param s The error string to send */ diff --git a/include/usermanager.h b/include/usermanager.h index 9cc3e0309..f994e9739 100644 --- a/include/usermanager.h +++ b/include/usermanager.h @@ -77,10 +77,30 @@ class CoreExport UserManager : public classbase */ unsigned long LocalCloneCount(User *user); + /** Return a count of users, unknown and known connections + * @return The number of users + */ + unsigned int UserCount(); + + /** Return a count of fully registered connections only + * @return The number of registered users + */ + unsigned int RegisteredUserCount(); + /** Return a count of opered (umode +o) users only + * @return The number of opers + */ + unsigned int OperCount(); + /** Return a count of unregistered (before NICK/USER) users only + * @return The number of unregistered (unknown) connections + */ + unsigned int UnregisteredUserCount(); - void RemoveCloneCounts(); + /** Return a count of local users on this server only + * @return The number of local users + */ + unsigned int LocalUserCount(); }; #endif diff --git a/src/commands/cmd_lusers.cpp b/src/commands/cmd_lusers.cpp index bb9670227..f91266a15 100644 --- a/src/commands/cmd_lusers.cpp +++ b/src/commands/cmd_lusers.cpp @@ -25,15 +25,15 @@ CmdResult CommandLusers::Handle (const char**, int, User *user) { // this lusers command shows one server at all times because // a protocol module must override it to show those stats. - user->WriteServ("251 %s :There are %d users and %d invisible on 1 server",user->nick,ServerInstance->UserCount()-ServerInstance->ModeCount('i'),ServerInstance->ModeCount('i')); - if (ServerInstance->OperCount()) - user->WriteServ("252 %s %d :operator(s) online",user->nick,ServerInstance->OperCount()); - if (ServerInstance->UnregisteredUserCount()) - user->WriteServ("253 %s %d :unknown connections",user->nick,ServerInstance->UnregisteredUserCount()); + user->WriteServ("251 %s :There are %d users and %d invisible on 1 server",user->nick,ServerInstance->Users->UserCount()-ServerInstance->ModeCount('i'),ServerInstance->ModeCount('i')); + if (ServerInstance->Users->OperCount()) + user->WriteServ("252 %s %d :operator(s) online",user->nick,ServerInstance->Users->OperCount()); + if (ServerInstance->Users->UnregisteredUserCount()) + user->WriteServ("253 %s %d :unknown connections",user->nick,ServerInstance->Users->UnregisteredUserCount()); if (ServerInstance->ChannelCount()) user->WriteServ("254 %s %d :channels formed",user->nick,ServerInstance->ChannelCount()); - if (ServerInstance->LocalUserCount()) - user->WriteServ("255 %s :I have %d clients and 0 servers",user->nick,ServerInstance->LocalUserCount()); + if (ServerInstance->Users->LocalUserCount()) + user->WriteServ("255 %s :I have %d clients and 0 servers",user->nick,ServerInstance->Users->LocalUserCount()); return CMD_SUCCESS; } diff --git a/src/helperfuncs.cpp b/src/helperfuncs.cpp index 40b2d7d90..048de75ca 100644 --- a/src/helperfuncs.cpp +++ b/src/helperfuncs.cpp @@ -339,18 +339,6 @@ void InspIRCd::SendError(const std::string &s) } } -/* this function counts all users connected, wether they are registered or NOT. */ -int InspIRCd::UserCount() -{ - return clientlist->size(); -} - -/* this counts only registered users, so that the percentages in /MAP don't mess up when users are sitting in an unregistered state */ -int InspIRCd::RegisteredUserCount() -{ - return clientlist->size() - this->UnregisteredUserCount(); -} - /* return how many users have a given mode e.g. 'a' */ int InspIRCd::ModeCount(const char mode) { @@ -362,31 +350,12 @@ int InspIRCd::ModeCount(const char mode) return 0; } -/* return how many users are opered */ -int InspIRCd::OperCount() -{ - return this->all_opers.size(); -} - -/* return how many users are unregistered */ -int InspIRCd::UnregisteredUserCount() -{ - return this->unregistered_count; -} - /* return channel count */ long InspIRCd::ChannelCount() { return chanlist->size(); } -/* return how many local registered users there are */ -long InspIRCd::LocalUserCount() -{ - /* Doesnt count unregistered clients */ - return (local_users.size() - this->UnregisteredUserCount()); -} - bool InspIRCd::IsValidMask(const std::string &mask) { char* dest = (char*)mask.c_str(); diff --git a/src/modules/m_spanningtree/main.cpp b/src/modules/m_spanningtree/main.cpp index 4312dd4b3..dabc20fdf 100644 --- a/src/modules/m_spanningtree/main.cpp +++ b/src/modules/m_spanningtree/main.cpp @@ -123,11 +123,11 @@ void ModuleSpanningTree::HandleLinks(const char** parameters, int pcnt, User* us void ModuleSpanningTree::HandleLusers(const char** parameters, int pcnt, User* user) { - unsigned int n_users = ServerInstance->UserCount(); + unsigned int n_users = ServerInstance->Users->UserCount(); /* Only update these when someone wants to see them, more efficient */ - if ((unsigned int)ServerInstance->LocalUserCount() > max_local) - max_local = ServerInstance->LocalUserCount(); + if ((unsigned int)ServerInstance->Users->LocalUserCount() > max_local) + max_local = ServerInstance->Users->LocalUserCount(); if (n_users > max_global) max_global = n_users; @@ -154,17 +154,17 @@ void ModuleSpanningTree::HandleLusers(const char** parameters, int pcnt, User* u ServerInstance->ModeCount('i'), ulined_count ? this->CountServs() - ulined_count : this->CountServs()); - if (ServerInstance->OperCount()) - user->WriteServ("252 %s %d :operator(s) online",user->nick,ServerInstance->OperCount()); + if (ServerInstance->Users->OperCount()) + user->WriteServ("252 %s %d :operator(s) online",user->nick,ServerInstance->Users->OperCount()); - if (ServerInstance->UnregisteredUserCount()) - user->WriteServ("253 %s %d :unknown connections",user->nick,ServerInstance->UnregisteredUserCount()); + if (ServerInstance->Users->UnregisteredUserCount()) + user->WriteServ("253 %s %d :unknown connections",user->nick,ServerInstance->Users->UnregisteredUserCount()); if (ServerInstance->ChannelCount()) user->WriteServ("254 %s %d :channels formed",user->nick,ServerInstance->ChannelCount()); - user->WriteServ("255 %s :I have %d clients and %d servers",user->nick,ServerInstance->LocalUserCount(),ulined_local_count ? this->CountLocalServs() - ulined_local_count : this->CountLocalServs()); - user->WriteServ("265 %s :Current Local Users: %d Max: %d",user->nick,ServerInstance->LocalUserCount(),max_local); + user->WriteServ("255 %s :I have %d clients and %d servers",user->nick,ServerInstance->Users->LocalUserCount(),ulined_local_count ? this->CountLocalServs() - ulined_local_count : this->CountLocalServs()); + user->WriteServ("265 %s :Current Local Users: %d Max: %d",user->nick,ServerInstance->Users->LocalUserCount(),max_local); user->WriteServ("266 %s :Current Global Users: %d Max: %d",user->nick,n_users,max_global); return; } diff --git a/src/usermanager.cpp b/src/usermanager.cpp index c980e0eb3..bc5eb01a9 100644 --- a/src/usermanager.cpp +++ b/src/usermanager.cpp @@ -237,3 +237,41 @@ unsigned long UserManager::LocalCloneCount(User *user) else return 0; } + +/* this function counts all users connected, wether they are registered or NOT. */ +unsigned int UserManager::UserCount() +{ + /* + * XXX: Todo: + * As part of this restructuring, move clientlist/etc fields into usermanager. + * -- w00t + */ + return ServerInstance->clientlist->size(); +} + +/* this counts only registered users, so that the percentages in /MAP don't mess up */ +unsigned int UserManager::RegisteredUserCount() +{ + return ServerInstance->clientlist->size() - this->UnregisteredUserCount(); +} + +/* return how many users are opered */ +unsigned int UserManager::OperCount() +{ + return ServerInstance->all_opers.size(); +} + +/* return how many users are unregistered */ +unsigned int UserManager::UnregisteredUserCount() +{ + return ServerInstance->unregistered_count; +} + +/* return how many local registered users there are */ +unsigned int UserManager::LocalUserCount() +{ + /* Doesnt count unregistered clients */ + return (ServerInstance->local_users.size() - this->UnregisteredUserCount()); +} + + -- 2.39.5