summaryrefslogtreecommitdiff
path: root/src/modules/m_spanningtree/treeserver.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/modules/m_spanningtree/treeserver.h')
-rw-r--r--src/modules/m_spanningtree/treeserver.h18
1 files changed, 18 insertions, 0 deletions
diff --git a/src/modules/m_spanningtree/treeserver.h b/src/modules/m_spanningtree/treeserver.h
index 3f1f0755d..2e6c47bf4 100644
--- a/src/modules/m_spanningtree/treeserver.h
+++ b/src/modules/m_spanningtree/treeserver.h
@@ -65,6 +65,10 @@ class TreeServer : public Server
*/
void AddHashEntry();
+ /** Used by SQuit logic to recursively remove servers
+ */
+ void SQuitInternal(const std::string& reason, int& num_lost_servers, int& num_lost_users);
+
public:
typedef std::vector<TreeServer*> ChildServers;
FakeUser* const ServerUser; /* User representing this server */
@@ -87,6 +91,20 @@ class TreeServer : public Server
*/
TreeServer(const std::string& Name, const std::string& Desc, const std::string& id, TreeServer* Above, TreeSocket* Sock, bool Hide);
+ /** SQuit a server connected to this server, removing the given server and all servers behind it
+ * @param server Server to squit, must be directly below this server
+ * @param reason Reason for quitting the server, sent to opers and other servers
+ */
+ void SQuitChild(TreeServer* server, const std::string& reason);
+
+ /** SQuit this server, removing this server and all servers behind it
+ * @param reason Reason for quitting the server, sent to opers and other servers
+ */
+ void SQuit(const std::string& reason)
+ {
+ GetParent()->SQuitChild(this, reason);
+ }
+
int QuitUsers(const std::string &reason);
/** Get route.