X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Fmodules%2Fm_spanningtree%2Futils.h;h=a2f7212f6d0c7c4a65e2e04c419b859a215d1c13;hb=1e96bca9b075aebec490e6892ef2da2a3048ba12;hp=345b62b099b3c9edb8872eff781d516ed95814cb;hpb=67de413cad88194972d55a8ff88464370890c5a9;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/src/modules/m_spanningtree/utils.h b/src/modules/m_spanningtree/utils.h index 345b62b09..a2f7212f6 100644 --- a/src/modules/m_spanningtree/utils.h +++ b/src/modules/m_spanningtree/utils.h @@ -25,18 +25,17 @@ #include "inspircd.h" #include "cachetimer.h" -/* Foward declarations */ class TreeServer; class TreeSocket; class Link; class Autoconnect; class ModuleSpanningTree; class SpanningTreeUtilities; +class CmdBuilder; extern SpanningTreeUtilities* Utils; -/* This hash_map holds the hash equivalent of the server - * tree, used for rapid linear lookups. +/** Associative container type, mapping server names/ids to TreeServers */ typedef TR1NS::unordered_map server_hash; @@ -45,14 +44,11 @@ typedef TR1NS::unordered_map [] format - */ - std::string ConstructLine(const std::string& prefix, const std::string& command, const parameterlist& params); - CacheRefreshTimer RefreshTimer; public: typedef std::set TreeSocketSet; + typedef std::map > TimeoutList; /** Creator module */ @@ -94,7 +90,7 @@ class SpanningTreeUtilities : public classbase server_hash sidlist; /** List of all outgoing sockets and their timeouts */ - std::map > timeoutlist; + TimeoutList timeoutlist; /** Holds the data from the tags in the conf */ std::vector > LinkBlocks; @@ -102,14 +98,6 @@ class SpanningTreeUtilities : public classbase */ std::vector > AutoconnectBlocks; - /** True (default) if we are to use challenge-response HMAC - * to authenticate passwords. - * - * NOTE: This defaults to on, but should be turned off if - * you are linking to an older version of inspircd. - */ - bool ChallengeResponse; - /** Ping frequency of server to server links */ int PingFreq; @@ -130,15 +118,15 @@ class SpanningTreeUtilities : public classbase /** Send a message from this server to one other local or remote */ - bool DoOneToOne(const std::string& prefix, const std::string& command, const parameterlist& params, const std::string& target); + void DoOneToOne(const CmdBuilder& params, Server* target); /** Send a message from this server to all but one other, local or remote */ - void DoOneToAllButSender(const std::string& prefix, const std::string& command, const parameterlist& params, TreeServer* omit); + void DoOneToAllButSender(const CmdBuilder& params, TreeServer* omit); /** Send a message from this server to all others */ - void DoOneToMany(const std::string &prefix, const std::string &command, const parameterlist ¶ms); + void DoOneToMany(const CmdBuilder& params); /** Read the spanningtree module's tags from the config file */ @@ -146,13 +134,13 @@ class SpanningTreeUtilities : public classbase /** Handle nick collision */ - int DoCollision(User* u, TreeServer* server, time_t remotets, const std::string& remoteident, const std::string& remoteip, const std::string& remoteuid); + bool DoCollision(User* u, TreeServer* server, time_t remotets, const std::string& remoteident, const std::string& remoteip, const std::string& remoteuid, const char* collidecmd); /** Compile a list of servers which contain members of channel c */ void GetListOfServersForChannel(Channel* c, TreeSocketSet& list, char status, const CUList& exempt_list); - /** Find a server by name + /** Find a server by name or SID */ TreeServer* FindServer(const std::string &ServerName); @@ -160,9 +148,10 @@ class SpanningTreeUtilities : public classbase */ TreeServer* FindServerID(const std::string &id); - /** Find a route to a server by name + /** Find a server based on a target string. + * @param target Target string where a command should be routed to. May be a server name, a sid, a nickname or a uuid. */ - TreeServer* BestRouteTo(const std::string &ServerName); + TreeServer* FindRouteTarget(const std::string& target); /** Find a server by glob mask */ @@ -181,7 +170,7 @@ class SpanningTreeUtilities : public classbase void SendChannelMessage(const std::string& prefix, Channel* target, const std::string& text, char status, const CUList& exempt_list, const char* message_type, TreeSocket* omit = NULL); }; -inline void SpanningTreeUtilities::DoOneToMany(const std::string& prefix, const std::string& command, const parameterlist& params) +inline void SpanningTreeUtilities::DoOneToMany(const CmdBuilder& params) { - DoOneToAllButSender(prefix, command, params, NULL); + DoOneToAllButSender(params, NULL); }