]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/modules/m_spanningtree/utils.h
Allow support for multiple dns results per request. This is a significant change...
[user/henk/code/inspircd.git] / src / modules / m_spanningtree / utils.h
index 0e289146b9bb959bb9f230a04fc305923dec11b3..3a36a2e202f3eec040b45d8de476da75d862a1d0 100644 (file)
@@ -29,7 +29,11 @@ class ModuleSpanningTree;
 /* This hash_map holds the hash equivalent of the server
  * tree, used for rapid linear lookups.
  */
+#ifdef WINDOWS
+typedef nspace::hash_map<std::string, TreeServer*, nspace::hash_compare<string, less<string> > > server_hash;
+#else
 typedef nspace::hash_map<std::string, TreeServer*, nspace::hash<string>, irc::StrHashComp> server_hash;
+#endif
 
 typedef std::map<TreeServer*,TreeServer*> TreeServerList;
 
@@ -51,6 +55,9 @@ class SpanningTreeUtilities
        /** Creator module
         */
        ModuleSpanningTree* Creator;
+       /** Remote servers that are currently bursting
+        */
+       server_hash RemoteServersBursting;
        /** Flatten links and /MAP for non-opers
         */
        bool FlatLinks;
@@ -69,6 +76,10 @@ class SpanningTreeUtilities
        /** Socket bindings for listening sockets
         */
        std::vector<TreeSocket*> Bindings;
+       /* Number of seconds that a server can go without ping
+        * before opers are warned of high latency.
+        */
+       int PingWarnTime;
        /** This variable represents the root of the server tree
         */
        TreeServer *TreeRoot;
@@ -112,6 +123,10 @@ class SpanningTreeUtilities
         */
        bool ChallengeResponse;
 
+       /** Ping frequency of server to server links
+        */
+       int PingFreq;
+
        /** Initialise utility class
         */
        SpanningTreeUtilities(InspIRCd* Instance, ModuleSpanningTree* Creator);
@@ -148,6 +163,12 @@ class SpanningTreeUtilities
        /** Find a server by name
         */
        TreeServer* FindServer(const std::string &ServerName);
+       /** Find a remote bursting server by name
+        */
+       TreeServer* FindRemoteBurstServer(TreeServer* Server);
+       /** Set a remote server to bursting or not bursting
+        */
+       void SetRemoteBursting(TreeServer* Server, bool bursting);
        /** Find a route to a server by name
         */
        TreeServer* BestRouteTo(const std::string &ServerName);