X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Fmodules%2Fm_spanningtree%2Futils.h;h=a80b60e46a005b2288e8993c1ea4d24292e5dcfc;hb=78aabc62e7510af5075b2056f703f0aa42e328a4;hp=db61fd7aaa40eeb7b4cf6787afce3437393034db;hpb=4f946291b7fd022b50fe5aacb9b851cebfbb2278;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/src/modules/m_spanningtree/utils.h b/src/modules/m_spanningtree/utils.h index db61fd7aa..a80b60e46 100644 --- a/src/modules/m_spanningtree/utils.h +++ b/src/modules/m_spanningtree/utils.h @@ -2,8 +2,8 @@ * | Inspire Internet Relay Chat Daemon | * +------------------------------------+ * - * InspIRCd: (C) 2002-2008 InspIRCd Development Team - * See: http://www.inspircd.org/wiki/index.php/Credits + * InspIRCd: (C) 2002-2009 InspIRCd Development Team + * See: http://wiki.inspircd.org/Credits * * This program is free but copyrighted software; see * the file COPYING for details. @@ -20,17 +20,42 @@ class TreeServer; class TreeSocket; class Link; +class Autoconnect; class ModuleSpanningTree; +class SpanningTreeUtilities; /* This hash_map holds the hash equivalent of the server * tree, used for rapid linear lookups. */ -#ifdef WINDOWS -typedef nspace::hash_map > > server_hash; +#if defined(WINDOWS) && !defined(HASHMAP_DEPRECATED) + typedef nspace::hash_map > > server_hash; #else -typedef nspace::hash_map, irc::StrHashComp> server_hash; + #ifdef HASHCOMP_DEPRECATED + typedef nspace::hash_map server_hash; + #else + typedef nspace::hash_map, irc::StrHashComp> server_hash; + #endif #endif +/* + * Initialises server connections + */ +class ServerSocketListener : public ListenSocketBase +{ + SpanningTreeUtilities *Utils; + + public: + ServerSocketListener(SpanningTreeUtilities *u, int port, char* addr) : ListenSocketBase(port, addr) + { + this->Utils = u; + Hook = NULL; + } + + Module* Hook; + + virtual void OnAcceptReady(int nfd); +}; + typedef std::map TreeServerList; /** A group of modules that implement BufferedSocketHook @@ -43,10 +68,6 @@ typedef std::map hookmodules; */ class SpanningTreeUtilities : public classbase { - private: - /** Creator server - */ - InspIRCd* ServerInstance; public: /** Creator module */ @@ -62,12 +83,17 @@ class SpanningTreeUtilities : public classbase */ bool AnnounceTSChange; + /** Allow modules marked as VF_OPTCOMMON to be mismatched when linking + */ + bool AllowOptCommon; + /** Make snomasks +CQ quiet during bursts and splits */ bool quiet_bursts; + /** Socket bindings for listening sockets */ - std::vector Bindings; + std::vector Bindings; /* Number of seconds that a server can go without ping * before opers are warned of high latency. */ @@ -75,6 +101,9 @@ class SpanningTreeUtilities : public classbase /** This variable represents the root of the server tree */ TreeServer *TreeRoot; + /** Represents the server whose command we are processing + */ + FakeUser *ServerUser; /** IPs allowed to link to us */ std::vector ValidIPs; @@ -87,9 +116,15 @@ class SpanningTreeUtilities : public classbase /** Hash of servers currently bursting but not initialized as connected */ std::map burstingserverlist; + /** List of all outgoing sockets and their timeouts + */ + std::map > timeoutlist; /** Holds the data from the tags in the conf */ - std::vector LinkBlocks; + std::vector > LinkBlocks; + /** Holds the data from the tags in the conf + */ + std::vector > AutoconnectBlocks; /** List of module pointers which can provide I/O abstraction */ @@ -113,7 +148,11 @@ class SpanningTreeUtilities : public classbase /** Initialise utility class */ - SpanningTreeUtilities(InspIRCd* Instance, ModuleSpanningTree* Creator); + SpanningTreeUtilities(ModuleSpanningTree* Creator); + + /** Prepare for class destruction + */ + bool cull(); /** Destroy class and free listeners etc */ @@ -121,27 +160,27 @@ 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, std::deque ¶ms, std::string target); + bool DoOneToOne(const std::string &prefix, const std::string &command, parameterlist ¶ms, std::string target); /** Send a message from this server to all but one other, local or remote */ - bool DoOneToAllButSender(const std::string &prefix, const std::string &command, std::deque ¶ms, std::string omit); + bool DoOneToAllButSender(const std::string &prefix, const std::string &command, parameterlist ¶ms, std::string omit); /** Send a message from this server to all but one other, local or remote */ - bool DoOneToAllButSender(const char* prefix, const char* command, std::deque ¶ms, std::string omit); + bool DoOneToAllButSender(const char* prefix, const char* command, parameterlist ¶ms, std::string omit); /** Send a message from this server to all others */ - bool DoOneToMany(const std::string &prefix, const std::string &command, std::deque ¶ms); + bool DoOneToMany(const std::string &prefix, const std::string &command, parameterlist ¶ms); /** Send a message from this server to all others */ - bool DoOneToMany(const char* prefix, const char* command, std::deque ¶ms); + bool DoOneToMany(const char* prefix, const char* command, parameterlist ¶ms); /** Send a message from this server to all others, without doing any processing on the command (e.g. send it as-is with colons and all) */ - bool DoOneToAllButSenderRaw(const std::string &data, const std::string &omit, const std::string &prefix, const irc::string &command, std::deque ¶ms); + bool DoOneToAllButSenderRaw(const std::string &data, const std::string &omit, const std::string &prefix, const irc::string &command, parameterlist ¶ms); /** Read the spanningtree module's tags from the config file */ @@ -175,10 +214,6 @@ class SpanningTreeUtilities : public classbase */ bool IsServer(const std::string &ServerName); - /** Attempt to connect to the failover link of link x - */ - void DoFailOver(Link* x); - /** Find a link tag from a server name */ Link* FindLink(const std::string& name);