X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=include%2Fusermanager.h;h=941569e8c02e7af1813ec95468fd7e924a3d36d8;hb=7770cd985405c7630e9149fc08c314ec824a9c75;hp=361584cdaa184cd21cf30d8d218b5587d11748af;hpb=e5ada400b0f2e2ae02f40867450a6789126da6e3;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/include/usermanager.h b/include/usermanager.h index 361584cda..941569e8c 100644 --- a/include/usermanager.h +++ b/include/usermanager.h @@ -41,7 +41,7 @@ class CoreExport UserManager : public fakederef /** A list holding local users */ - typedef intrusive_list LocalList; + typedef insp::intrusive_list LocalList; private: /** Map of IP addresses for clone counting @@ -56,6 +56,11 @@ class CoreExport UserManager : public fakederef */ LocalList local_users; + /** Last used already sent id, used when sending messages to neighbors to help determine whether the message has + * been sent to a particular user or not. See User::ForEachNeighbor() for more info. + */ + already_sent_t already_sent_id; + public: /** Constructor, initializes variables */ @@ -83,12 +88,6 @@ class CoreExport UserManager : public fakederef */ unsigned int unregistered_count; - /** - * Reset the already_sent IDs so we don't wrap it around and drop a message - * Also removes all expired invites - */ - void GarbageCollect(); - /** Perform background user events such as PING checks */ void DoBackgroundUserStuff(); @@ -130,6 +129,10 @@ class CoreExport UserManager : public fakederef */ void RemoveCloneCounts(User *user); + /** Rebuild clone counts + */ + void RehashCloneCounts(); + /** Return the number of local and global clones of this user * @param user The user to get the clone counts for * @return The clone counts of this user. The returned reference is volatile - you @@ -183,4 +186,9 @@ class CoreExport UserManager : public fakederef * @param ... The format arguments */ void ServerNoticeAll(const char* text, ...) CUSTOM_PRINTF(2, 3); + + /** Retrieves the next already sent id, guaranteed to be not equal to any user's already_sent field + * @return Next already_sent id + */ + already_sent_t NextAlreadySentId(); };