diff options
author | w00t <w00t@e03df62e-2008-0410-955e-edbf42e46eb7> | 2008-01-16 16:19:57 +0000 |
---|---|---|
committer | w00t <w00t@e03df62e-2008-0410-955e-edbf42e46eb7> | 2008-01-16 16:19:57 +0000 |
commit | af9d3617375b3fb013dc6ac49a1926bde4f775e0 (patch) | |
tree | c46b85581642518b7d8a1474014c3cdd37f14f6e /include/cull_list.h | |
parent | 72fe978b29fa7d9fd7f8e9c2766c06ab1a0a8bc7 (diff) |
Remove an O(log n) in favour of an O(1) operation, and tidy up culllist some more
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@8717 e03df62e-2008-0410-955e-edbf42e46eb7
Diffstat (limited to 'include/cull_list.h')
-rw-r--r-- | include/cull_list.h | 85 |
1 files changed, 4 insertions, 81 deletions
diff --git a/include/cull_list.h b/include/cull_list.h index 25c4b48a5..ff22880b4 100644 --- a/include/cull_list.h +++ b/include/cull_list.h @@ -14,81 +14,8 @@ #ifndef __CULLLIST_H__ #define __CULLLIST_H__ -// include the common header files - -#include <string> -#include <deque> -#include <vector> - -class InspIRCd; - -/** The CullItem class holds a user and their quitmessage, - * and is used internally by the CullList class to compile - * a list of users which are to be culled when a long - * operation (such as a netsplit) has completed. - */ -class CoreExport CullItem : public classbase -{ - private: - /** Holds a pointer to the user, - * must be valid and can be a local or remote user. - */ - User* user; - /** Holds the quit reason to use for this user. - */ - std::string reason; - /** Holds the quit reason opers see, if different from users - */ - std::string oper_reason; - /** Silent items dont generate an snotice. - */ - bool silent; - public: - /** Constrcutor. - * Initializes the CullItem with a user pointer - * and their quit reason - * @param u The user to add - * @param r The quit reason of the added user - * @param ro The quit reason to show to opers only - */ - CullItem(User* u, std::string &r, const char* ro = ""); - /** Constrcutor. - * Initializes the CullItem with a user pointer - * and their quit reason - * @param u The user to add - * @param r The quit reason of the added user - * @param ro The quit reason to show to opers only - */ - CullItem(User* u, const char* r, const char* ro = ""); - - /** Make the quit silent a module is dealing with - * displaying this users quit, so we shouldn't - * send anything out. - */ - void MakeSilent(); - - /** Returns true if the quit for this user has been set - * to silent. - */ - bool IsSilent(); - - /** Destructor - */ - ~CullItem(); - - /** Returns a pointer to the user - */ - User* GetUser(); - /** Returns the user's quit reason - */ - std::string& GetReason(); - /** Returns oper reason - */ - std::string& GetOperReason(); -}; - -/** The CullList class can be used by modules, and is used - * by the core, to compile large lists of users in preperation +/** The CullList class is used by the core to create lists of users + * prior to actually quitting (and deleting the objects) all at once. * to quitting them all at once. This is faster than quitting * them within the loop, as the loops become tighter with * little or no comparisons within them. The CullList class @@ -99,6 +26,8 @@ class CoreExport CullItem : public classbase * or remote users, but it may only hold each user once. If * you attempt to add the same user twice, then the second * attempt will be ignored. + * + * NOTE: Don't use this outside core, use the QuitUser method like everyone else! */ class CoreExport CullList : public classbase { @@ -107,10 +36,6 @@ class CoreExport CullList : public classbase */ InspIRCd* ServerInstance; - /** Holds a list of users already added for quick lookup - */ - std::map<User*, User*> exempt; - /** Holds a list of users being quit. * See the information for CullItem for * more information. @@ -119,8 +44,6 @@ class CoreExport CullList : public classbase public: /** Constructor. - * Clears the CullList::list and CullList::exempt - * items. * @param Instance Creator of this CullList object */ CullList(InspIRCd* Instance); |