+/* +------------------------------------+
+ * | Inspire Internet Relay Chat Daemon |
+ * +------------------------------------+
+ *
+ * InspIRCd: (C) 2002-2007 InspIRCd Development Team
+ * See: http://www.inspircd.org/wiki/index.php/Credits
+ *
+ * This program is free but copyrighted software; see
+ * the file COPYING for details.
+ *
+ * ---------------------------------------------------
+ */
+
#ifndef __TREESERVER_H__
#define __TREESERVER_H__
time_t NextPing; /* After this time, the server should be PINGed*/
bool LastPingWasGood; /* True if the server responded to the last PING with a PONG */
SpanningTreeUtilities* Utils; /* Utility class */
+ std::string sid; /* Server ID */
+
+ /** Set server ID
+ * @param id Server ID
+ * @throws CoreException on duplicate ID
+ */
+ void SetID(const std::string &id);
public:
+ bool Warned; /* True if we've warned opers about high latency on this server */
+
/** We don't use this constructor. Its a dummy, and won't cause any insertion
* of the TreeServer into the hash_map. See below for the two we DO use.
*/
- TreeServer(SpanningTreeUtilities* Util, InspIRCd* Instance);
+ TreeServer(SpanningTreeUtilities* Util, InspIRCd* Instance, const std::string &id);
/** We use this constructor only to create the 'root' item, Utils->TreeRoot, which
* represents our own server. Therefore, it has no route, no parent, and
* no socket associated with it. Its version string is our own local version.
*/
- TreeServer(SpanningTreeUtilities* Util, InspIRCd* Instance, std::string Name, std::string Desc);
+ TreeServer(SpanningTreeUtilities* Util, InspIRCd* Instance, std::string Name, std::string Desc, const std::string &id);
/** 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, bool Hide);
+ 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);
*/
time_t LastPing;
+ /** Last ping time in microseconds, used to calculate round trip time
+ */
+ unsigned long LastPingMsec;
+
/** Round trip time of last ping
*/
- time_t rtt;
+ unsigned long rtt;
/** True if this server is hidden
*/
*/
bool Tidy();
+ /** Get server ID
+ */
+ std::string& GetID();
+
/** Destructor
*/
~TreeServer();