]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/modules/m_spanningtree/treeserver.h
Link m_ldap against libldap_r
[user/henk/code/inspircd.git] / src / modules / m_spanningtree / treeserver.h
index 2e6c47bf4be066f39a60ab8693e3b58a7ec40584..f06e0bafa8307f3ca23177b2c6ae48bf22f9d9c4 100644 (file)
@@ -60,6 +60,10 @@ class TreeServer : public Server
         */
        unsigned int behind_bursting;
 
+       /** True if this server has been lost in a split and is awaiting destruction
+        */
+       bool isdead;
+
        /** This method is used to add this TreeServer to the
         * hash maps. It is only called by the constructors.
         */
@@ -67,7 +71,11 @@ class TreeServer : public Server
 
        /** Used by SQuit logic to recursively remove servers
         */
-       void SQuitInternal(const std::string& reason, int& num_lost_servers, int& num_lost_users);
+       void SQuitInternal(unsigned int& num_lost_servers);
+
+       /** Remove the reference to this server from the hash maps
+        */
+       void RemoveHash();
 
  public:
        typedef std::vector<TreeServer*> ChildServers;
@@ -105,7 +113,7 @@ class TreeServer : public Server
                GetParent()->SQuitChild(this, reason);
        }
 
-       int QuitUsers(const std::string &reason);
+       static unsigned int QuitUsers(const std::string& reason);
 
        /** Get route.
         * The 'route' is defined as the locally-
@@ -121,6 +129,11 @@ class TreeServer : public Server
         */
        bool IsLocal() const { return (this->Route == this); }
 
+       /** Returns true if the server is awaiting destruction
+        * @return True if the server is waiting to be culled and deleted, false otherwise
+        */
+       bool IsDead() const { return isdead; }
+
        /** Get server version string
         */
        const std::string& GetVersion();
@@ -199,12 +212,6 @@ class TreeServer : public Server
         */
        bool DelChild(TreeServer* Child);
 
-       /** Removes child nodes of this node, and of that node, etc etc.
-        * This is used during netsplits to automatically tidy up the
-        * server tree. It is slow, we don't use it for much else.
-        */
-       void Tidy();
-
        /** Get server ID
         */
        const std::string& GetID();
@@ -237,9 +244,7 @@ class TreeServer : public Server
 
        CullResult cull();
 
-       /** Destructor
-        * Removes the reference to this object from the
-        * hash maps.
+       /** Destructor, deletes ServerUser unless IsRoot()
         */
        ~TreeServer();