X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=include%2Fcull_list.h;h=c5daab5dd5befac31a0e4544b6788033f8d0df7d;hb=b80d1be349a5a5dbb16cde08d59543a553f9a382;hp=64e6b3bdb3ca61f5b8839764bb704329e9f3df1c;hpb=9a52a667163a6abc5b83fd268b55c9062b55131f;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/include/cull_list.h b/include/cull_list.h index 64e6b3bdb..c5daab5dd 100644 --- a/include/cull_list.h +++ b/include/cull_list.h @@ -29,34 +29,64 @@ class InspIRCd; * a list of users which are to be culled when a long * operation (such as a netsplit) has completed. */ -class CullItem : public classbase +class CoreExport CullItem : public classbase { private: /** Holds a pointer to the user, - * must be valid and can be a local or remote user. - */ - userrec* 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(userrec* u, std::string &r); - CullItem(userrec* u, const char* r); + 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 */ - userrec* GetUser(); + 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 @@ -72,48 +102,61 @@ class CullItem : public classbase * you attempt to add the same user twice, then the second * attempt will be ignored. */ -class CullList : public classbase +class CoreExport CullList : public classbase { private: /** Creator of this CullList - */ + */ InspIRCd* ServerInstance; /** Holds a list of users already added for quick lookup */ - std::map exempt; + std::map exempt; /** Holds a list of users being quit. - * See the information for CullItem for - * more information. - */ + * See the information for CullItem for + * more information. + */ std::vector list; public: /** Constructor. - * Clears the CullList::list and CullList::exempt - * items. - * @param Instance Creator of this CullList object - */ + * Clears the CullList::list and CullList::exempt + * items. + * @param Instance Creator of this CullList object + */ CullList(InspIRCd* Instance); /** Adds a user to the cull list for later - * removal via QUIT. - * @param user The user to add - * @param reason The quit reason of the user being added - */ - void AddItem(userrec* user, std::string &reason); - void AddItem(userrec* user, const char* reason); + * removal via QUIT. + * @param user The user to add + * @param reason The quit reason of the user being added + * @param o_reason The quit reason to show only to opers + */ + void AddItem(User* user, std::string &reason, const char* o_reason = ""); + + /** Adds a user to the cull list for later + * removal via QUIT. + * @param user The user to add + * @param reason The quit reason of the user being added + * @param o_reason The quit reason to show only to opers + */ + void AddItem(User* user, const char* reason, const char* o_reason = ""); + + /* Turn an item into a silent item (don't send out QUIT for this user) + */ + void MakeSilent(User* user); /** Applies the cull list, quitting all the users - * on the list with their quit reasons all at once. - * This is a very fast operation compared to - * iterating the user list and comparing each one, - * especially if there are multiple comparisons - * to be done, or recursion. - * @returns The number of users removed from IRC. - */ + * on the list with their quit reasons all at once. + * This is a very fast operation compared to + * iterating the user list and comparing each one, + * especially if there are multiple comparisons + * to be done, or recursion. + * @returns The number of users removed from IRC. + */ int Apply(); }; #endif +