X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Fmodules%2Fm_spanningtree%2Futils.h;h=a2566c0c86eec5bbcd0fb93e9aed4e04c6652787;hb=ca4c4a67988419b9eb479ffcf82238dc1648b0ad;hp=48677e57d0a94211e77409136c634924051098e1;hpb=b6a5e2bd143cdd2fc610f79c87729d2e211da7ff;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/src/modules/m_spanningtree/utils.h b/src/modules/m_spanningtree/utils.h index 48677e57d..a2566c0c8 100644 --- a/src/modules/m_spanningtree/utils.h +++ b/src/modules/m_spanningtree/utils.h @@ -1,20 +1,29 @@ -/* +------------------------------------+ - * | Inspire Internet Relay Chat Daemon | - * +------------------------------------+ +/* + * InspIRCd -- Internet Relay Chat Daemon + * + * Copyright (C) 2009 Daniel De Graaf + * Copyright (C) 2008 Robin Burchell + * Copyright (C) 2007 Dennis Friis + * Copyright (C) 2007 Craig Edwards * - * InspIRCd: (C) 2002-2009 InspIRCd Development Team - * See: http://wiki.inspircd.org/Credits + * This file is part of InspIRCd. InspIRCd is free software: you can + * redistribute it and/or modify it under the terms of the GNU General Public + * License as published by the Free Software Foundation, version 2. * - * This program is free but copyrighted software; see - * the file COPYING for details. + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. * - * --------------------------------------------------- + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . */ -#ifndef __ST__UTIL__ -#define __ST__UTIL__ + +#pragma once #include "inspircd.h" +#include "cachetimer.h" /* Foward declarations */ class TreeServer; @@ -27,39 +36,21 @@ class SpanningTreeUtilities; /* This hash_map holds the hash equivalent of the server * tree, used for rapid linear lookups. */ -#if defined(WINDOWS) && !defined(HASHMAP_DEPRECATED) - typedef nspace::hash_map > > server_hash; -#else - #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; +typedef TR1NS::unordered_map server_hash; - public: - ServerSocketListener(SpanningTreeUtilities *u, int port, const std::string& addr, const std::string& Hook) - : ListenSocketBase(port, addr, "servers", Hook), Utils(u) - { - } - - virtual void OnAcceptReady(int nfd); -}; - -typedef std::map TreeServerList; +typedef std::set TreeServerList; /** Contains helper functions and variables for this module, * and keeps them out of the global namespace */ class SpanningTreeUtilities : public classbase { + /** Creates a line in the : [] format + */ + std::string ConstructLine(const std::string& prefix, const std::string& command, const parameterlist& params); + + CacheRefreshTimer RefreshTimer; + public: /** Creator module */ @@ -90,9 +81,6 @@ 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; @@ -133,7 +121,7 @@ class SpanningTreeUtilities : public classbase /** Prepare for class destruction */ - bool cull(); + CullResult cull(); /** Destroy class and free listeners etc */ @@ -143,35 +131,19 @@ 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, parameterlist ¶ms, std::string target); + bool DoOneToOne(const std::string& prefix, const std::string& command, const parameterlist& params, const 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, 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, parameterlist ¶ms, std::string omit); - - /** Send a message from this server to all others - */ - bool DoOneToMany(const std::string &prefix, const std::string &command, parameterlist ¶ms); + bool DoOneToAllButSender(const std::string &prefix, const std::string &command, const parameterlist& params, const std::string& omit); /** Send a message from this server to all others */ - 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, parameterlist ¶ms); + bool DoOneToMany(const std::string &prefix, const std::string &command, const parameterlist ¶ms); /** Read the spanningtree module's tags from the config file */ - void ReadConfiguration(bool rebind); - - /** Add a server to the server list for GetListOfServersForChannel - */ - void AddThisServer(TreeServer* server, TreeServerList &list); + void ReadConfiguration(); /** Compile a list of servers which contain members of channel c */ @@ -193,10 +165,6 @@ class SpanningTreeUtilities : public classbase */ TreeServer* FindServerMask(const std::string &ServerName); - /** Returns true if this is a server name we recognise - */ - bool IsServer(const std::string &ServerName); - /** Find a link tag from a server name */ Link* FindLink(const std::string& name); @@ -204,6 +172,8 @@ class SpanningTreeUtilities : public classbase /** Refresh the IP cache used for allowing inbound connections */ void RefreshIPCache(); -}; -#endif + /** Sends a PRIVMSG or a NOTICE to a channel obeying an exempt list and an optional prefix + */ + void SendChannelMessage(const std::string& prefix, Channel* target, const std::string &text, char status, const CUList& exempt_list, const char* message_type); +};