- /** When we create a new server, we call this constructor to initialize it.
- * This constructor initializes the server's Route and Parent, and sets up
- * its ping counters so that it will be pinged one minute from now.
- */
- TreeServer(SpanningTreeUtilities* Util, InspIRCd* Instance, std::string Name, std::string Desc, TreeServer* Above, TreeSocket* Sock);
-
- int QuitUsers(const std::string &reason);
-
- /** This method is used to add the structure to the
- * hash_map for linear searches. It is only called
- * by the constructors.
- */
- void AddHashEntry();
-
- /** This method removes the reference to this object
- * from the hash_map which is used for linear searches.
- * It is only called by the default destructor.
- */
- void DelHashEntry();
-
- /** These accessors etc should be pretty self-
- * explanitory.
- */
- TreeServer* GetRoute();
- std::string GetName();
- std::string GetDesc();
- std::string GetVersion();
- void SetNextPingTime(time_t t);
- time_t NextPingTime();
- bool AnsweredLastPing();
- void SetPingFlag();
- int GetUserCount();
- void AddUserCount();
- void DelUserCount();
- int GetOperCount();
- TreeSocket* GetSocket();
- TreeServer* GetParent();
- void SetVersion(const std::string &Version);
- unsigned int ChildCount();
- TreeServer* GetChild(unsigned int n);
- void AddChild(TreeServer* Child);
- 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.
- */
- bool Tidy();
-
- ~TreeServer();
+ /** When we create a new server, we call this constructor to initialize it.
+ * This constructor initializes the server's Route and Parent, and sets up
+ * its ping counters so that it will be pinged one minute from now.
+ */
+ TreeServer(SpanningTreeUtilities* Util, InspIRCd* Instance, std::string Name, std::string Desc, const std::string &id, TreeServer* Above, TreeSocket* Sock, bool Hide);
+
+ int QuitUsers(const std::string &reason);
+
+ /** This method is used to add the structure to the
+ * hash_map for linear searches. It is only called
+ * by the constructors.
+ */
+ void AddHashEntry();
+
+ /** This method removes the reference to this object
+ * from the hash_map which is used for linear searches.
+ * It is only called by the default destructor.
+ */
+ void DelHashEntry();
+
+ /** Get route.
+ * The 'route' is defined as the locally-
+ * connected server which can be used to reach this server.
+ */
+ TreeServer* GetRoute();
+
+ /** Get server name
+ */
+ std::string GetName();
+
+ /** Get server description (GECOS)
+ */
+ std::string GetDesc();
+
+ /** Get server version string
+ */
+ std::string GetVersion();
+
+ /** Set time we are next due to ping this server
+ */
+ void SetNextPingTime(time_t t);
+
+ /** Get the time we are next due to ping this server
+ */
+ time_t NextPingTime();
+
+ /** Time of last ping used to calculate this->rtt below
+ */
+ time_t LastPing;
+
+ /** Last ping time in microseconds, used to calculate round trip time
+ */
+ unsigned long LastPingMsec;
+
+ /** Round trip time of last ping
+ */
+ unsigned long rtt;
+
+ /** True if this server is hidden
+ */
+ bool Hidden;
+
+ /** True if the server answered their last ping
+ */
+ bool AnsweredLastPing();
+
+ /** Set the server as responding to its last ping
+ */
+ void SetPingFlag();
+
+ /** Get the number of users on this server for MAP
+ */
+ int GetUserCount();
+
+ /** Increment the user counter
+ */
+ void AddUserCount();
+
+ /** Decrement the user counter
+ */
+ void DelUserCount();
+
+ /** Get the oper count for this server
+ */
+ int GetOperCount();
+
+ /** Get the TreeSocket pointer for local servers.
+ * For remote servers, this returns NULL.
+ */
+ TreeSocket* GetSocket();
+
+ /** Get the parent server.
+ * For the root node, this returns NULL.
+ */
+ TreeServer* GetParent();
+
+ /** Set the server version string
+ */
+ void SetVersion(const std::string &Version);
+
+ /** Return number of child servers
+ */
+ unsigned int ChildCount();
+
+ /** Return a child server indexed 0..n
+ */
+ TreeServer* GetChild(unsigned int n);
+
+ /** Add a child server
+ */
+ void AddChild(TreeServer* Child);
+
+ /** Delete a child server, return false if it didn't exist.
+ */
+ 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.
+ */
+ bool Tidy();
+
+ /** Get server ID
+ */
+ std::string& GetID();
+
+ /** Destructor
+ */
+ ~TreeServer();