- TreeServer(SpanningTreeUtilities* Util, const std::string& Name, const std::string& Desc, const std::string& id, TreeServer* Above, TreeSocket* Sock, bool Hide);
+ 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
+ * @param error Whether the server is being squit because of an error.
+ */
+ void SQuitChild(TreeServer* server, const std::string& reason, bool error = false);
+
+ /** SQuit this server, removing this server and all servers behind it
+ * @param reason Reason for quitting the server, sent to opers and other servers
+ * @param error Whether the server is being squit because of an error.
+ */
+ void SQuit(const std::string& reason, bool error = false)
+ {
+ GetParent()->SQuitChild(this, reason, error);
+ }