*/
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.
*/
/** 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;
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-
*/
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();
*/
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();
CullResult cull();
- /** Destructor
- * Removes the reference to this object from the
- * hash maps.
+ /** Destructor, deletes ServerUser unless IsRoot()
*/
~TreeServer();